停止播放音频剪辑

Stop Audio clip from playing

我正在制作恐怖游戏,希望在触发时播放声音。问题是每次我输入触发器时它都不会一直被触发。我想要的是进入触发器,播放声音,然后它就再也不会播放了。我尝试了很多东西,比如破坏剪辑……但我似乎无法让它正常工作。

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());
            //??? 
    }   
}

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

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

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

最简单的方法是销毁这个触发器游戏对象或这个处理音频播放的脚本。音频播放完毕后,可以使用 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;
    }       
}