停止播放音频剪辑
本文关键字:音频 播放 | 更新日期: 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。让子脚本在声音片段播放完毕后自行销毁。从场景中移除子游戏对象后,将无法再次播放。