死亡时播放的 UI 对象动画

Posted

技术标签:

【中文标题】死亡时播放的 UI 对象动画【英文标题】:Animation of UI objects to play on death 【发布时间】:2021-10-22 13:56:51 【问题描述】:

基本上,在我的场景中,在一个名为“GameOverUI”的游戏对象下方,我有一些按钮和一个覆盖屏幕的面板。我制作了一个简单的动画,面板的不透明度(Alpha 通道)增加了。你们有谁知道如何做到这一点,以便当玩家死亡时,它会启用 GameOverUI 并为面板播放一次动画?

编辑:忘了说,我知道如何让'GameOverUI'被启用,我只是不知道如何让动画播放

【问题讨论】:

你如何处理玩家的死亡?你会在“你死了”标题之后重新加载场景吗? 基本上在我的第一个问题中(在我的帐户上)显示了玩家脚本的一部分,但基本上,我使用一个名为“currentHealth”的浮点数来处理玩家的健康状况,这是所有玩家的累积健康状况四肢。当 currentHealth 达到 0 时,我禁用移动并使 Time.timeScale = 0。然后我让它启用一个 GameObjectCanvas,其中包含所有游戏对象,如重启按钮等。我的问题是我有一个动画组件附加到画布上,动画使面板的 alpha 通道随着时间的推移从 0 变为 255,并使按钮在屏幕上显示。 但是它在一开始就播放,当它没有被启用并且永远不会再播放时,我想要发生的是它只在游戏对象启用时播放一次 【参考方案1】:

如果您正在寻找带有动画的解决方案,那么您可以这样做:

为您的GameOverUI 游戏对象创建一个脚本。真的很简单:

public class UIHandler : MonoBehaviour

   private void OnEnable()
   
       //play "dead screen" animation
   

方法OnEnable()是一个MonoBehavior函数,当你通过调用myGameObject.SetActive(true);启用游戏对象时会被调用。

但是,我建议考虑另一种解决方案。我通常让GameOverUI 始终处于活动状态,并使用它通过脚本管理其子级。所以我认为写这样的东西会更优雅:

public class UIHandler : MonoBehaviour

   public void PlayerDied()
   
       //play "dead screen" animation
   

不同之处在于,您调用的是方法,而不是启用和禁用 GameObject。这样,如果需要,您将能够传递数据(作为函数参数)。例如,你可以写到屏幕上,是什么导致了死亡。此外,GameObject 将能够管理其 UI 组件以用于其他目的。

我希望这是有道理的,我可以为您提供帮助!

【讨论】:

以上是关于死亡时播放的 UI 对象动画的主要内容,如果未能解决你的问题,请参考以下文章

世界中心的死亡动画生成(统一)

Unity Animator:Curves : 曲线运用的两个案例

《魔兽世界》8.3 PTR数据挖掘,发现加密的死亡骑士简介动画

Salvation——怪物角色动画&主角碰撞死亡动画

jvm-对象生存还是死亡

如果目标对象死亡,Qt::BlockingQueuedConnection 发射会发生啥?