如何实现菜单动画在游戏加载后播放及修复场景切换后动画失效问题
主菜单动画场景切换与首次加载问题解决方案
核心修复逻辑
保留upscaled time设置解决场景切换返回的动画失效问题,同时通过脚本手动控制动画播放时机,避免首次加载时动画提前跑完。
具体操作步骤
- 关闭Animator自动播放:选中菜单的Animator组件,取消勾选
Play Automatically,防止场景加载时自动启动动画。 - 挂载控制脚本:给菜单根节点添加以下C#脚本,统一控制动画触发时机:
using UnityEngine; public class MenuAnimTrigger : MonoBehaviour { private Animator _menuAnimator; void Awake() { _menuAnimator = GetComponent<Animator>(); // 初始化动画到起始状态,暂停播放 _menuAnimator.Play("动画初始状态名称", -1, 0f); _menuAnimator.enabled = false; } void Start() { // 延迟一帧确保UI完全加载后再启动动画 Invoke(nameof(StartMenuAnimation), 0.1f); } void StartMenuAnimation() { _menuAnimator.enabled = true; _menuAnimator.SetTrigger("触发滑入动画的Trigger名"); } }
- 调整Animator状态机:在状态机中设置一个空的初始状态,通过Trigger触发滑入动画,确保脚本能正确驱动动画流程。
- 保留upscaled time设置:维持Animator的
Update Mode为Unscaled Time,避免场景切换时因时间缩放导致动画不播放。
优化提示
- 若首次加载仍看不到动画,可适当增大
Invoke的延迟时间(如0.2f),确保游戏资源完全加载完毕。 - 场景切换返回时,脚本的生命周期函数会重新执行,自动触发动画,无需额外处理。
内容的提问来源于stack exchange,提问作者Raigan
相关产品推荐
相关产品推荐

