From 23de5adf752aa22d9bc320a19a6c9fed84da4613 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Fri, 24 Jul 2026 15:12:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(enemy):=20MeleeAttackAbility=20=E7=A9=BA=20?= =?UTF-8?q?clip=20=E8=B5=B0=20fallbackDuration(=E5=88=A4=20clip.Clip=20?= =?UTF-8?q?=E8=80=8C=E9=9D=9E=20clip),=E5=85=91=E7=8E=B0=20EnemyAttackSO?= =?UTF-8?q?=20=E5=A5=91=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/_Game/Scripts/Enemies/Abilities/MeleeAttackAbility.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Assets/_Game/Scripts/Enemies/Abilities/MeleeAttackAbility.cs b/Assets/_Game/Scripts/Enemies/Abilities/MeleeAttackAbility.cs index 06c1540c..605d9b8b 100644 --- a/Assets/_Game/Scripts/Enemies/Abilities/MeleeAttackAbility.cs +++ b/Assets/_Game/Scripts/Enemies/Abilities/MeleeAttackAbility.cs @@ -68,7 +68,9 @@ namespace BaseGames.Enemies.Abilities Phase = AbilityRunState.Active; float duration = atk.fallbackDuration; - if (atk.clip != null && _animancer != null) + // clip 是 ClipTransition(包装对象,恒非 null);须判其内部 .Clip 是否为空—— + // 为空表示本段无动画,按 EnemyAttackSO 契约走 fallbackDuration,不可 Play(否则 Animancer 抛 Clip is null)。 + if (atk.clip != null && atk.clip.Clip != null && _animancer != null) { var state = _animancer.Play(atk.clip); if (state != null && state.Length > 0f) duration = state.Length;