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

如何在Unity中设置时间延迟让按钮在视频播放完毕后显示

Unity/C# 交互式视频按钮延迟显示实现方案

有两种成熟的实现方式可以满足你的需求:

方案1:监听视频播放完成事件(最推荐)

该方案和视频实际播放进度绑定,不会受视频卡顿、变速播放的影响,逻辑最准确:

  • 首先确认你的视频使用Unity官方VideoPlayer组件播放
  • 提前将需要控制的跳转按钮在Inspector面板取消勾选,默认设置为隐藏状态
  • 编写C#脚本挂载到VideoPlayer所在的游戏对象上,代码示例如下:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class ShowButtonAfterVideo : MonoBehaviour
{
    // Inspector里拖拽赋值你要显示的按钮
    public Button targetButton;
    private VideoPlayer _videoPlayer;

    void Start()
    {
        _videoPlayer = GetComponent<VideoPlayer>();
        // 注册视频播放完成回调事件
        _videoPlayer.loopPointReached += OnVideoPlayFinished;
    }

    // 视频播放到末尾时自动触发该方法
    void OnVideoPlayFinished(VideoPlayer vp)
    {
        targetButton.gameObject.SetActive(true);
    }
}

方案2:固定时长延迟显示

如果你只需要固定延后多少秒显示按钮,和视频进度无关,可以用该方案:

  • 同样先将按钮默认设置为隐藏状态
  • 编写C#脚本挂载到任意持久存在的游戏对象上,代码示例如下:
using UnityEngine;
using UnityEngine.UI;

public class DelayShowButton : MonoBehaviour
{
    public Button targetButton;
    // 这里设置延后多少秒显示按钮,单位为秒
    public float delayTime = 15f;

    void Start()
    {
        // 方法1:用Invoke实现
        Invoke(nameof(ShowTargetButton), delayTime);
        
        // 方法2:用协程实现,二选一即可
        // StartCoroutine(ShowButtonCoroutine());
    }

    void ShowTargetButton()
    {
        targetButton.gameObject.SetActive(true);
    }

    /*
    IEnumerator ShowButtonCoroutine()
    {
        yield return new WaitForSeconds(delayTime);
        targetButton.gameObject.SetActive(true);
    }
    */
}

注意:如果你的按钮是需要在视频播放完毕后才显示交互,优先使用方案1,避免视频时长调整后还要手动修改延迟参数

内容的提问来源于stack exchange,提问作者geoffrey wilson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:24:03