From 5f4eff1cefc36bec347c5df1f09b161b3b126edf Mon Sep 17 00:00:00 2001 From: yangbear Date: Sat, 11 Jul 2026 05:35:30 +0800 Subject: [PATCH] Swap order: Shose now triggers Ping, and Ping triggers ChanraoTuibu. Final voice moved to ChanraoTuibu. --- Assets/Scripts/Core/UndoManager.cs | 12 ++++++++++ .../Interaction/ChanraoTuibuHandler.cs | 23 ++++++++----------- .../Scripts/Interaction/PingClickHandler.cs | 22 ++++++++++++------ Assets/Scripts/UI/PageController.cs | 8 +++---- 4 files changed, 40 insertions(+), 25 deletions(-) diff --git a/Assets/Scripts/Core/UndoManager.cs b/Assets/Scripts/Core/UndoManager.cs index 85fdd35..81fc4e6 100644 --- a/Assets/Scripts/Core/UndoManager.cs +++ b/Assets/Scripts/Core/UndoManager.cs @@ -60,6 +60,18 @@ public static class ActionHistory var sm = Object.FindObjectOfType(); if (sm != null) sm.SetPingStepIndex(0); + var chanraotuibu = GameObject.Find("chanraotuibu"); + if (chanraotuibu == null) + { + var mi = GameObject.Find("manInjury"); + if (mi != null) + { + var t = mi.transform.Find("chanraotuibu"); + if (t != null) chanraotuibu = t.gameObject; + } + } + if (chanraotuibu != null) chanraotuibu.SetActive(false); + return true; } diff --git a/Assets/Scripts/Interaction/ChanraoTuibuHandler.cs b/Assets/Scripts/Interaction/ChanraoTuibuHandler.cs index bdf0fd6..dea6f40 100644 --- a/Assets/Scripts/Interaction/ChanraoTuibuHandler.cs +++ b/Assets/Scripts/Interaction/ChanraoTuibuHandler.cs @@ -2,7 +2,7 @@ using UnityEngine; public class ChanraoTuibuHandler : MonoBehaviour { - public GameObject nextObject; + private MeshRenderer _outlineMesh; private float _lastClickTime; private bool _isFinished; @@ -76,20 +76,15 @@ public class ChanraoTuibuHandler : MonoBehaviour var mr = GetComponent(); if (mr != null) mr.enabled = true; foreach (var r in GetComponentsInChildren(true)) { if (_outlineMesh != null && r == _outlineMesh) continue; r.enabled = true; } // 显示模型 - // 如果由于意外 nextObject 丢失了,手动把它指向 ping.004 - if (nextObject == null) + // 播放最后一句语音 + var am = FindObjectOfType(); + if (am != null) { - var mi = GameObject.Find("manInjury"); - if (mi != null) - { - var p004 = mi.transform.Find("ping.004"); - if (p004 != null) nextObject = p004.gameObject; - } +#if UNITY_EDITOR + var finishClip = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/Audio/people/伤员一切正常,包扎完毕.mp3"); + if (finishClip != null) am.PlayVoice(finishClip); +#endif } - - // 激活下一个(ping.004) - if (nextObject != null) { nextObject.SetActive(true); Debug.Log($"[ChanraoTuibu] → {nextObject.name}"); } - else Debug.LogError("[ChanraoTuibu] 致命错误:nextObject 依然是 null!找不到 ping.004"); } public void ResetState() @@ -99,7 +94,7 @@ public class ChanraoTuibuHandler : MonoBehaviour var smr = GetComponent(); if (smr != null) smr.enabled = false; foreach (var r in GetComponentsInChildren(true)) { if (_outlineMesh != null && r == _outlineMesh) continue; r.enabled = false; } if (_outlineMesh != null) _outlineMesh.enabled = true; - if (nextObject != null) { nextObject.SetActive(false); var p = nextObject.GetComponent(); if (p != null) p.UndoShow(); } + StopAllCoroutines(); StartCoroutine(BlinkOutline()); } diff --git a/Assets/Scripts/Interaction/PingClickHandler.cs b/Assets/Scripts/Interaction/PingClickHandler.cs index 459f981..7daa758 100644 --- a/Assets/Scripts/Interaction/PingClickHandler.cs +++ b/Assets/Scripts/Interaction/PingClickHandler.cs @@ -122,14 +122,22 @@ public class PingClickHandler : MonoBehaviour if (activePingCount == 0) { - Debug.Log("[PingClick] 所有的 ping 都已经绑成 chanrao 了!播放完成语音。"); - var am = FindObjectOfType(); - if (am != null) + Debug.Log("[PingClick] 所有的 ping 都已经绑成 chanrao 了!现在激活 chanraotuibu。"); + + var chanraotuibu = GameObject.Find("chanraotuibu"); + if (chanraotuibu == null) { -#if UNITY_EDITOR - var finishClip = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/Audio/people/伤员一切正常,包扎完毕.mp3"); - if (finishClip != null) am.PlayVoice(finishClip); -#endif + var mi = GameObject.Find("manInjury"); + if (mi != null) + { + var t = mi.transform.Find("chanraotuibu"); + if (t != null) chanraotuibu = t.gameObject; + } + } + + if (chanraotuibu != null) + { + chanraotuibu.SetActive(true); } // 隐藏视频面板 diff --git a/Assets/Scripts/UI/PageController.cs b/Assets/Scripts/UI/PageController.cs index d509b28..fa65f79 100644 --- a/Assets/Scripts/UI/PageController.cs +++ b/Assets/Scripts/UI/PageController.cs @@ -446,13 +446,13 @@ public class PageController : MonoBehaviour h.targetPoint = GameObject.Find("ShosePoint")?.transform; if (h.nextObject == null) { - var chanraotuibu = GameObject.Find("chanraotuibu"); - if (chanraotuibu == null) + var ping004 = GameObject.Find("ping.004"); + if (ping004 == null) { var mi = GameObject.Find("manInjury"); - if (mi != null) chanraotuibu = mi.transform.Find("chanraotuibu")?.gameObject; + if (mi != null) ping004 = mi.transform.Find("ping.004")?.gameObject; } - h.nextObject = chanraotuibu; + h.nextObject = ping004; } // 确保一开始鞋子模型可见,但不闪烁且不可点击 h.enabled = false;