From 06be1d6eef7691db3def10951900a440c4c7b4ff Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Tue, 30 Jun 2026 16:14:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(peipei):=20UF=5FspriteIn=20=E4=BB=8E=20Yarn?= =?UTF-8?q?=20=E5=8F=98=E9=87=8F=E8=A7=A3=E6=9E=90=20EyeTarget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 切换 UF 模式后 CurrentTarget 可能为空,回退读取 $currentEyeTarget。 Co-authored-by: Cursor --- Assets/Scripts/MiniGame/Peipei/UF/UFSystem.cs | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/MiniGame/Peipei/UF/UFSystem.cs b/Assets/Scripts/MiniGame/Peipei/UF/UFSystem.cs index 8deca61b9..8b4082d0a 100644 --- a/Assets/Scripts/MiniGame/Peipei/UF/UFSystem.cs +++ b/Assets/Scripts/MiniGame/Peipei/UF/UFSystem.cs @@ -62,13 +62,36 @@ public class UFSystem : MonoBehaviour eyeSystem?.SetUnifiedUfWeights(0f, 0f, 0f); } + private EyeTarget ResolveSpriteTarget() + { + if (eyeSystem == null) + { + return null; + } + + if (eyeSystem.CurrentTarget != null) + { + return eyeSystem.CurrentTarget; + } + + if (YarnVariableStorage.Instance != null + && YarnVariableStorage.Instance.TryGetValue("$currentEyeTarget", out string targetName) + && !string.IsNullOrEmpty(targetName)) + { + return eyeSystem.FindEyeTargetByName(targetName); + } + + return null; + } + [YarnCommand("UF_spriteIn")] public IEnumerator UF_spriteIn(float duration = 1.5f) { - if (eyeSystem.CurrentTarget != null) + var target = ResolveSpriteTarget(); + if (target != null) { AudioManager.Instance.PlaySfx("event:/ActionFB/color_imagine"); - eyeSystem.CurrentTarget.ImageIn(duration); + target.ImageIn(duration); } yield return new WaitForSeconds(duration); @@ -77,10 +100,11 @@ public class UFSystem : MonoBehaviour [YarnCommand("UF_spriteOut")] public IEnumerator UF_spriteOut(float duration = 1.5f) { - if (eyeSystem.CurrentTarget != null) + var target = ResolveSpriteTarget(); + if (target != null) { AudioManager.Instance.PlaySfx("event:/ActionFB/color_imagine"); - eyeSystem.CurrentTarget.ImageOut(duration); + target.ImageOut(duration); } yield return new WaitForSeconds(duration);