Unity过场动画开发:实现音频播放完成后延迟2秒播放新音频
Unity实现音频播放完成后延迟2秒播放另一音频的方案
你的现有代码通过硬编码31秒等待来触发第二个音频,这种方式不够灵活——如果音频长度修改,等待时间就会失效。正确的做法是基于音频的实际播放时长来等待,再加上2秒延迟,具体实现如下:
修改后的代码
using System.Collections; using UnityEngine; using UnityEngine.SceneManager; public class ButtonActionHolder : MonoBehaviour { // 统一使用一个AudioSource,避免重复引用 public AudioSource audioSource; public AudioClip drnefariotalk1; public AudioClip childtalk; public AudioClip drnefariotalk2; IEnumerator PlayAudioSequence() { // 播放第一个音频片段 audioSource.PlayOneShot(drnefariotalk1); // 等待第一个音频完全播放完毕(使用音频自身的长度属性) yield return new WaitForSeconds(drnefariotalk1.length); // 额外延迟2秒 yield return new WaitForSeconds(2f); // 播放第二个音频片段 audioSource.PlayOneShot(childtalk); } void Start() { // 在场景启动时触发音频序列 StartCoroutine(PlayAudioSequence()); } public void Play() { SceneManager.LoadScene(2); } }
核心说明
- 替代硬编码等待时间:用
drnefariotalk1.length获取音频的实际时长,不管音频怎么修改,等待逻辑都会自动适配 - 简化组件引用:移除了重复的
AudioSource变量,只保留一个即可完成所有音频播放 - 序列逻辑清晰:严格按照「播放第一个音频 → 等它播完 → 延迟2秒 → 播放第二个音频」的顺序执行,完全匹配需求
- 灵活触发:如果不需要在
Start时启动序列,可将StartCoroutine(PlayAudioSequence())移动到其他触发方法(比如按钮点击事件)中
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

