来自事件触发器的 Unity 调用更新函数

unity call update function from event trigger

提问人:Priyansh Yadav 提问时间:12/5/2022 更新时间:12/6/2022 访问量:599

问:

我的游戏基于事件触发器,没有帧相关函数......但是我想实现一些依赖于帧的 UI 动画......现在问题是我想从事件触发器调用这个函数。

我搜索了一下,发现我可以在带有 if 语句的更新函数中有一个触发器布尔值,所以它不会执行......当事件被触发时,布尔值变为 true,在下一帧开始执行动画,并在动画完成后将其切换回 false......

但是我仍然想问是否有更好的方法可以做到这一点,因为我不想每次都使应用程序调用更新功能......

C# Unity-游戏引擎

评论

0赞 Willard Peng 12/5/2022
使用DoTween怎么样?dotween.demigiant.com/documentation.php
0赞 nkazz 12/5/2022
这是一篇关于更新性能成本的好文章,一般来说,如果不是数千个对象,成本是可以忽略不计的
1赞 Everts 12/5/2022
让您的事件启动协程,这将起到更新的作用。
0赞 Pavlos Mavris 12/5/2022
取决于您的动画。如果你的动画不是一个循环,你可以使用触发器参数来启动动画,只需在动画结束时创建一个事件来调用一个函数,并在函数内部简单地重置你的触发器。您可以在此处阅读有关它的更多信息: docs.unity3d.com/ScriptReference/Animator.SetTrigger.html 注意:您可以避免文档中的更新方法,在您的情况下只需使用 OnTriggerEnter() 方法即可
0赞 Priyansh Yadav 12/5/2022
@PavlosMavris我不好使用动画而没有清楚地定义它......UI 对象根据脚本以我想要的模式移动,它不完全是“动画”......所以我认为我不能使用你的建议......

答:

0赞 Rhoran 12/6/2022 #1

您可以创建 2 个脚本。一个脚本用于 Trigger-Function,一个脚本用于 Update-Function。将两者添加到对象中,并使用 Update-Function 禁用脚本。 当您的事件被触发时,只需启用 Update-Script 并在动画完成后禁用它。

评论

0赞 Priyansh Yadav 12/9/2022
这实际上是一个很好的和实用的......所以一种方法是协程,另一种是这样的......感谢您的回复...