Unity中,如何在播放完声音后才Destroy游戏对象
时间: 2024-02-18 07:02:30 浏览: 95
可以使用Unity中的协程Coroutine来实现在播放完声音后才Destroy游戏对象的功能。在协程中等待声音播放完成后再执行销毁GameObject的操作。
下面是示例代码:
```csharp
using UnityEngine;
public class SoundController : MonoBehaviour
{
public AudioClip soundClip;
private AudioSource audioSource;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
StartCoroutine(PlaySoundAndDestroy());
}
}
IEnumerator PlaySoundAndDestroy()
{
audioSource.PlayOneShot(soundClip);
yield return new WaitForSeconds(soundClip.length);
Destroy(gameObject);
}
}
```
在这个示例中,假设有一个游戏对象带有AudioSource组件,并且声音文件被赋值给了soundClip。当按下空格键时,将启动协程PlaySoundAndDestroy。在这个协程中,首先播放声音,然后等待声音播放完成后,销毁GameObject。注意使用yield return语句等待协程完成。
需要注意的是,在播放声音时,如果希望声音在游戏对象被销毁时停止播放,需要设置AudioSource组件的StopOnSceneLoad属性为false。否则,当场景切换时,声音可能会继续播放。
阅读全文