You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity3D跟随Brackeys教程开发时游戏结束界面动画触发后异常循环

Unity结束动画短片段循环问题解决方案

该问题和你贴出的两段脚本语法无关,核心是动画被重复触发、或是Animator状态机配置错漏,按优先级从高到低排查修复即可:

  • 给触发逻辑加单次拦截
    现有EndTrigger脚本没有做重复触发防护:如果玩家对象上挂载了多个碰撞体(比如主体碰撞体、脚底检测碰撞体、攻击判定碰撞体),或是玩家进入触发区后没有被立即移走/禁用,会反复调用CompleteLevel()重复触发动画,表现为只循环开头0.5秒左右的片段。
    直接修改EndTrigger脚本加锁:
    using UnityEngine;
    public class EndTrigger : MonoBehaviour {
    
        public GameManager gameManager;
        private bool _triggered = false;
    
        void OnTriggerEnter (Collider other)
        {
            if (!_triggered && other.CompareTag("Player"))
            {
                _triggered = true;
                gameManager.CompleteLevel();
                // 触发后直接关闭碰撞体,彻底杜绝重复调用
                GetComponent<Collider>().enabled = false;
            }
        }
    }
    
  • 修正Animator状态机配置
    你提到已经关闭Loop Time、设置了无退出时间过渡,重点补查这几个容易遗漏的配置项:
    1. 选中游戏结束动画片段,确认Loop Time、Loop Pose两个选项全部取消勾选,仅关闭Loop Time时部分Unity版本仍会出现片段内循环的问题
    2. 选中结束动画到空状态的过渡连线,确认Can Transition To Self选项为关闭状态——该选项开启时动画会满足条件就跳回自身开头,是短片段循环的高发原因
    3. 过渡配置里的Transition Duration要设为0,避免过渡过程中动画反复回跳
  • 排查错录的动画关键帧
    如果结束动画是你自行录制的UI动效,打开动画编辑时间轴检查0.5秒位置是否存在误录的关键帧:录制动画时如果误操作在0.5秒内打了属性关键帧、后续没有补帧,动画播到0.5秒位置就会回到初始状态,视觉上和循环完全一致,删掉错录的冗余关键帧、拉长动画到目标时长即可修复。

内容的提问来源于stack exchange,提问作者talha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:39:18