之前的代码段如下:
public AudioSource audioSource;
Update()
{
if(audioSource!=null)
{
audioSource.play();
Destory(gameObject);
}
}
在触发销毁后会让物体销毁并且连同绑定在物体上的音频一同销毁,导致无法按照预期效果播放音效。
1. 可以采用 static void PlayClipAtPoint(AudioClip audioClip,Vector3 position, float volume(0-1f)):
public AudioClip audioClip;
Update()
{
if(audioClip!=null)
{
AudioClip.PlayClipAtPoint(audioClip,position,1f);
Destory(gameObject);
}
}
Ps:会在指定位置生成一个One shot audio播放完后自动删除,但是在2D场景时会出现播放音量过小的情况,需要修改position的z轴位置,改为当前2D相机的z轴位置即可解决音量问题。
2. 在主类型中声明一个音频,绑定销毁音频的预制件,销毁物体前使用Instantiate函数克隆,播放完成后销毁。