You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:50:24