停止播放音频剪辑

本文关键字:音频 播放 | 更新日期: 2023-09-27 18:35:53

我正在制作一个恐怖游戏,想要在我传递扳机时播放声音。问题是每次我输入触发器时它都不会一直被触发。我想要的是进入触发器,播放声音,然后它必须再也不会播放。我尝试了很多事情,比如销毁剪辑。但我似乎无法使其正常工作。

public class SoundScript : MonoBehaviour 
{    
    public AudioClip Snd_Sound;
    IEnumerator Wait(){
        yield return new WaitForSeconds(20000);
        }
    void OnTriggerEnter(Collider col)
    {               
            audio.enabled = true;
            audio.PlayOneShot(Snd_Sound, 1f);
            StartCoroutine(Wait());
            //??? 
    }   
}

而且似乎我的等待秒不起作用。

停止播放音频剪辑

对不起,如果我误解了你的问题,我的英语不好:/我知道你需要让音频源在第一次进入后再也不会播放,即使玩家第二次进入触发器

最简单的方法是销毁此触发器游戏对象或此脚本,该脚本在您输入后处理音频的播放。音频播放完成后,您可以使用 Destroy() 函数,如 Destroy(gameObject)Destroy(this)

您还可以声明一个处理此音频播放的变量,例如:

bool playsound; //assign the value of **true** in Inspector
void OnTriggerEnter(Collider col)
{   
    if(playsound){
        audio.enabled = true;
        audio.PlayOneShot(Snd_Sound, 1f);
        playsound = false;
    }       
}  

我将创建一个保存声音咬合的子对象,并公开一个公共方法来播放声音。然后在 SoundScript 对象中,创建一个存储子对象脚本的变量。当触发 OnTriggerEnter 时,请检查变量是否不为空。如果不是,则在子对象中调用公共方法并将变量设置为 null。让子脚本在声音片段播放完毕后自行销毁。从场景中移除子游戏对象后,将无法再次播放。