gpt4 book ai didi

c# - 检测 VideoPlayer 何时播放完毕

转载 作者:行者123 更新时间:2023-11-30 15:18:11 25 4
gpt4 key购买 nike

我有一个 MovieController 类来管理我项目中的视频。我正在使用 Unity 5.6 中引入的新视频播放器组件。

我想在电影播放完毕后调用一个方法。到目前为止,这个方法只是一个Debug.Log,如您所见:

using UnityEngine;
using UnityEngine.Video;

public class MovieController : MonoBehaviour
{
private VideoPlayer m_VideoPlayer;

void Awake ()
{
m_VideoPlayer = GetComponent<VideoPlayer>();
m_VideoPlayer.loopPointReached += OnMovieFinished; // loopPointReached is the event for the end of the video
}

void OnMovieFinished(VideoPlayer player)
{
Debug.Log("Event for movie end called");
player.Stop();
}
}

我的问题是 OnMovieFinished 没有在视频结束时调用,我只是以黑屏结束,控制台中没有任何内容。

最佳答案

我不信任或不使用 VideoPlayer API 中的事件,因为我也遇到过它们的问题。您看到的是一个数月未修复的错误。

如果您想检测视频是否已播放完毕,请使用协程在 while 循环中检查每一帧的 videoPlayer.isPlaying。当while循环存在时,表示视频播放完毕。

while (videoPlayer.isPlaying)
{
yield return null;
}

//Done Playing

我现在无法对此进行测试以检查暂停功能是否影响 videoPlayer.isPlaying 但您可以自行测试。


另一种方法是检查 frameframeCount相同.如果为真,则您知道视频已播放完毕。

if(videoPlayer.frame == videoPlayer.frameCount)
{
//Video has finshed playing!
}

如果这些都不能解决您的问题,请提交错误报告。

关于c# - 检测 VideoPlayer 何时播放完毕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44696030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com