如何在不同的场景中停止音频?

时间:2015-06-25 08:43:22

标签: unity3d

我创建了一个带有音频源的对象,可播放超过10个场景(使用DontDestroyOnLoad)。在那个场景之后我想停止音乐。有人可以帮我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

如果我上面评论中的想法是正确的,你可以这样做(在具有AudioSource的对象的脚本中):

if (Application.loadedLevel == 11){    /*11 is an example*/
      GetComponent<AudioSource>().Stop();
}

答案 1 :(得分:0)

您可以创建单身类,并在任何课程中播放或停止。 为声音管理器创建游戏对象,并在gameObject上使用此脚本。

using UnityEngine;
using System.Collections;

public class SoundManager : MonoBehaviour 
{
    public AudioSource musicSource;
    public static SoundManager instance = null;

    void Awake()
    {
        if (instance == null)
            instance = this;
        else if (instance != this)
            Destroy (gameObject);

        DontDestroyOnLoad (gameObject);
    }

    public void PlayMusic(AudioClip clip)//We don't need Play for your problem.
    {
        musicSource.clip = clip;
        musicSource.Play ();
    }

    public void StopMusic(AudioClip clip)
    {
        musicSource.clip = clip;
        musicSource.Stop ();
    }
}

例如;

using UnityEngine;
using System.Collections;

public class GameManager : MonoBehaviour 
{
    public AudioClip mainTheme;

    public void NextLevel(int level)
    {
        Application.LoadLevel (level);

        if (level > 10)
            SoundManager.instance.StopMusic (mainTheme);
    }
}