停止另一个脚本的音频剪辑

本文关键字:音频 脚本 另一个 | 更新日期: 2023-09-27 18:07:17

我需要停止一个audioclip,它将从一个空的gameobject播放,有一个脚本附加到它。

附加的脚本将播放音乐,附加到另一个gameobject的另一个脚本将停止它。

我怎样才能做到这一点?

我可以使用audiosource代替,但是如果我这样做了,我如何从附加到第二个gameobject的第二个脚本调用audio.stop()呢?

停止另一个脚本的音频剪辑

你所需要做的就是从GameObject B中访问GameObject A中的脚本,并调用一个方法来停止播放剪辑。

例子

将AudioPlayer.cs附加到GameObject A

public class AudioPlayer : Monobehaviour {
    public static AudioSource instance;
    private AudioSource audioSource;
    void Awake () {
        instance = this;
        audioSource = GetComponent<AudioSource>();
    }
    public void PlayClip () {
        //Assumption is that you've assigned the audio clip to this source in the inspector
        audioSource.Play();
    }
    public void StopClip () {
        audioSource.Stop();
    }
}

将AudioController.cs附加到GameObject B

public class AudioController : Monobehaviour {
    void OnGUI () {
        if(GUI.Button(new Rect(10, 10, 150, 50), "Play Clip"))
            AudioPlayer.instance.PlayClip();
         if(GUI.Button(new Rect(10, 70, 150, 50), "Stop Clip"))
            AudioPlayer.instance.StopClip();
    }
}