繁体   English   中英

视频播放器的 Unity 事件如何工作?

[英]How do Unity Events for Video Players work?

我们有一个脚本附加到具有 VideoPlayer 和一些视频的 object 上。 我们想知道(订阅)视频什么时候结束,所以我们可以决定播放另一个或做其他事情。

void Start()
{
    videoPlayer.loopPointReached += Method();
}

VideoPlayer.EventHandler Method()
{
    Debug.Log("it ended");
    return null;
}

视频结束时日志不会出现。

存在对 videoPlayer 的引用,视频播放、暂停和停止都没有问题。

我们找到了包括计数帧等的解决方案,但我们希望有一个更优雅的解决方案。

你的代码写错了。 实际上,如果您编写videoPlayer.loopPointReached += null;则此代码是相同的 . 因此,您为loopPointReached事件订阅 null。 您将事件处理程序委托及其签名返回类型搞砸了。 你的代码应该是这样的,我想:

void Start()
{
    videoPlayer.loopPointReached += Method; // do not call method with '()', but just subscribe it for event
}

// here the signature of the method corresponds to VideoPlayer.EventHandler delegate,
// that is void(VideoPlayer)
private void Method(VideoPlayer source)
{
    Debug.Log("it ended");
}

您可以在 Unity 文档https://docs.unity3d.com/2017.2/Documentation/ScriptReference/Video.VideoPlayer.EventHandler.ZFC35FDC70D5FC69D263EZA58

您还可以阅读本主题中有关事件的移动如何在 C# 中制作按键表单事件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM