From ecfefa5b87a67c580351cb10a503af2c1dbbbe00 Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Tue, 21 Jul 2026 01:17:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(bodymodule):=20=E5=88=87=E5=89=B2=E6=97=B6?= =?UTF-8?q?=E6=8C=89=E8=88=B1=E5=A4=96=E7=8A=B6=E6=80=81=E5=90=8C=E6=AD=A5?= =?UTF-8?q?CutText?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../FixSystemNew/BodyModule/CuttingManager.cs | 10 ++----- .../BodyModule/Modules/BodyModule.cs | 29 +++++++++++++++++-- .../Scripts/FixSystemNew/States/CutFixCues.cs | 8 ++++- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/Assets/Scripts/FixSystemNew/BodyModule/CuttingManager.cs b/Assets/Scripts/FixSystemNew/BodyModule/CuttingManager.cs index 89eb1cba0..1bced0ac0 100644 --- a/Assets/Scripts/FixSystemNew/BodyModule/CuttingManager.cs +++ b/Assets/Scripts/FixSystemNew/BodyModule/CuttingManager.cs @@ -99,7 +99,7 @@ namespace AibisDream } } - public IEnumerator StartCutting(BodyModule targetModule, bool flickerCutTextOnEnter = false) + public IEnumerator StartCutting(BodyModule targetModule) { // 检查参数 if (targetModule == null) @@ -122,12 +122,8 @@ namespace AibisDream // 停止之前的切割 StopCutting(); - // StopCutting 会将 Cut Text 恢复为可见,因此需要在调用后同步进入状态。 - _targetModule.SetCutTextVisible(flickerCutTextOnEnter); - if (flickerCutTextOnEnter) - { - _targetModule.StartCutTextFlicker(); - } + // StopCutting 会打断 CutText 闪烁;按舱外 ModuleCondition 重新同步亮灭。 + _targetModule.ApplyCutTextFromCondition(); // 设置切割模式 isCuttingMode = true; diff --git a/Assets/Scripts/FixSystemNew/BodyModule/Modules/BodyModule.cs b/Assets/Scripts/FixSystemNew/BodyModule/Modules/BodyModule.cs index dadcb8d47..a2d5f10ac 100644 --- a/Assets/Scripts/FixSystemNew/BodyModule/Modules/BodyModule.cs +++ b/Assets/Scripts/FixSystemNew/BodyModule/Modules/BodyModule.cs @@ -239,6 +239,29 @@ namespace AibisDream.FixSystem } } + /// + /// 按当前 ModuleCondition 同步 CutText 亮灭,与舱外 ModuleText 表现一致。 + /// Normal 常亮 / Damaged 闪烁 / PoweredOff 熄灭。 + /// + public void ApplyCutTextFromCondition() + { + StopCutTextFlicker(restoreVisible: false); + + switch (condition) + { + case ModuleCondition.Normal: + SetCutTextVisible(true); + break; + case ModuleCondition.Damaged: + SetCutTextVisible(true); + StartCutTextFlicker(); + break; + case ModuleCondition.PoweredOff: + SetCutTextVisible(false); + break; + } + } + public SpriteRenderer GetCutSpriteRenderer() { return _cutSpriteRenderer; @@ -263,7 +286,7 @@ namespace AibisDream.FixSystem } } - public void StopCutTextFlicker() + public void StopCutTextFlicker(bool restoreVisible = true) { isCutTextFlickering = false; if (flickerCoroutine != null) @@ -272,8 +295,8 @@ namespace AibisDream.FixSystem flickerCoroutine = null; } - // 确保最终状态是可见的 - SetCutTextVisible(true); + if (restoreVisible) + SetCutTextVisible(true); } private IEnumerator CutTextFlickerCoroutine() diff --git a/Assets/Scripts/FixSystemNew/States/CutFixCues.cs b/Assets/Scripts/FixSystemNew/States/CutFixCues.cs index d6c8ff92d..978a4a257 100644 --- a/Assets/Scripts/FixSystemNew/States/CutFixCues.cs +++ b/Assets/Scripts/FixSystemNew/States/CutFixCues.cs @@ -32,6 +32,8 @@ namespace AibisDream.FixSystem bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f); bodyModule.GetCutSpriteRenderer().GetComponentInChildren().color = new Color(1f, 1f, 1f, 1f); + // 相机切入前先对齐 CutText,避免过渡期间亮灭与舱外不一致 + bodyModule.ApplyCutTextFromCondition(); } yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutEmo); @@ -77,13 +79,15 @@ namespace AibisDream.FixSystem bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f); bodyModule.GetCutSpriteRenderer().GetComponentInChildren().color = new Color(1f, 1f, 1f, 1f); + // 相机切入前先对齐 CutText,避免过渡期间亮灭与舱外不一致 + bodyModule.ApplyCutTextFromCondition(); } yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemory); yield return UIManager.Instance.GetPanel().FadeInAsync(0.1f); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemoryDeep); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.1f); - yield return cuttingManager.StartCutting(bodyModule, flickerCutTextOnEnter: true); + yield return cuttingManager.StartCutting(bodyModule); } @@ -121,6 +125,8 @@ namespace AibisDream.FixSystem bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f); bodyModule.GetCutSpriteRenderer().GetComponentInChildren().color = new Color(1f, 1f, 1f, 1f); + // 相机切入前先对齐 CutText,避免过渡期间亮灭与舱外不一致 + bodyModule.ApplyCutTextFromCondition(); } yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutLogic);