fix: resolve Next/Previous step and UI skipping bugs
This commit is contained in:
@@ -49,6 +49,9 @@ public class PageController : MonoBehaviour
|
||||
{
|
||||
Debug.Log("=== PageController 初始化开始 ===");
|
||||
|
||||
// 一开始就隐藏鞋子,以免在主页或开场动画时穿帮
|
||||
HideShose();
|
||||
|
||||
// 关掉多余AudioListener(只留Main Camera的)
|
||||
var cam2 = GameObject.Find("camera2"); if (cam2 != null) { var al = cam2.GetComponent<AudioListener>(); if (al != null) al.enabled = false; }
|
||||
var cam3 = GameObject.Find("camera3"); if (cam3 != null) { var al = cam3.GetComponent<AudioListener>(); if (al != null) al.enabled = false; }
|
||||
@@ -294,17 +297,27 @@ public class PageController : MonoBehaviour
|
||||
if (go.name == "medicalBox") { go.SetActive(true); Debug.Log("PageController: medicalBox 已显示"); break; }
|
||||
}
|
||||
|
||||
var touch = GameObject.Find("touchArray");
|
||||
if (touch != null && touch.transform.childCount > 0) { touch.transform.GetChild(0).gameObject.SetActive(true); Debug.Log("PageController: touchArray/point1 已显示");
|
||||
|
||||
// 自动播放第一段 woman 语音
|
||||
var am = FindObjectOfType<AudioManager>();
|
||||
if (am != null) {
|
||||
#if UNITY_EDITOR
|
||||
var autoClip = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>("Assets/Audio/people/周围环境安全,我是救护志愿者,我可以帮助您吗.mp3");
|
||||
if (autoClip != null) am.PlayVoice(autoClip);
|
||||
#endif
|
||||
} }
|
||||
// 隐藏所有的 point1, 2, 3,不要让它们显示出来
|
||||
var touchArray = GameObject.Find("touchArray");
|
||||
if (touchArray != null)
|
||||
{
|
||||
foreach (Transform child in touchArray.transform)
|
||||
{
|
||||
child.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
// 把 woman 直接放到 point1 的位置
|
||||
var woman = GameObject.Find("woman");
|
||||
var point1 = GameObject.Find("womanPointArray/point1");
|
||||
if (woman != null && point1 != null)
|
||||
{
|
||||
woman.transform.position = point1.transform.position;
|
||||
woman.transform.rotation = point1.transform.rotation;
|
||||
}
|
||||
|
||||
// 启动语音、等待及切换摄像机并激活鞋子的流程
|
||||
StartCoroutine(StartInitialVoiceAndCameraRoutine());
|
||||
|
||||
var tipPanel = GameObject.Find("TipPanel");
|
||||
if (tipPanel != null) tipPanel.SetActive(true);
|
||||
@@ -316,6 +329,8 @@ public class PageController : MonoBehaviour
|
||||
{
|
||||
Debug.Log("PageController: [ReturnToHome] 返回首页并重置场景");
|
||||
|
||||
HideShose();
|
||||
|
||||
var man = GameObject.Find("man");
|
||||
if (man != null) man.SetActive(true);
|
||||
var man2 = GameObject.Find("man2");
|
||||
@@ -341,16 +356,117 @@ public class PageController : MonoBehaviour
|
||||
if (mainGo != null) { var c = mainGo.GetComponent<Camera>(); if (c != null) c.enabled = true; }
|
||||
var cam2Go = GameObject.Find("camera2");
|
||||
if (cam2Go != null) { var c = cam2Go.GetComponent<Camera>(); if (c != null) c.enabled = false; }
|
||||
var cam3Go = GameObject.Find("camera3");
|
||||
if (cam3Go != null) { var c = cam3Go.GetComponent<Camera>(); if (c != null) c.enabled = false; }
|
||||
|
||||
var manAnim = man != null ? man.GetComponent<Animator>() : null;
|
||||
if (manAnim != null) { manAnim.SetBool("IsStart", false); manAnim.SetBool("IsFull", false); manAnim.Play("manIdle", 0, 0f); }
|
||||
|
||||
// 重置 woman 动画
|
||||
if (woman != null)
|
||||
{
|
||||
var wAnim = woman.GetComponent<Animator>();
|
||||
if (wAnim != null)
|
||||
{
|
||||
wAnim.SetBool("isCrouch", false);
|
||||
wAnim.Play("Idle", 0, 0f); // 假设其默认闲置动画为 Idle 或类似名称
|
||||
}
|
||||
}
|
||||
|
||||
// 重置 manInjury 动画
|
||||
if (mi != null)
|
||||
{
|
||||
var mAnim = mi.GetComponent<Animator>();
|
||||
if (mAnim != null)
|
||||
{
|
||||
mAnim.SetBool("CheckFoot", false);
|
||||
mAnim.Play("manInjury", 0, 0f); // 默认动画
|
||||
}
|
||||
|
||||
// 重置所有的 Handler 状态
|
||||
foreach (var handler in mi.GetComponentsInChildren<PingClickHandler>(true)) handler.ResetState();
|
||||
foreach (var handler in mi.GetComponentsInChildren<ChanraoTuibuHandler>(true)) handler.ResetState();
|
||||
}
|
||||
|
||||
// 找到 Shose 重置点击状态
|
||||
var shose = GameObject.Find("Shose");
|
||||
if (shose == null)
|
||||
{
|
||||
var allTransforms = Resources.FindObjectsOfTypeAll<Transform>();
|
||||
foreach(var t in allTransforms) { if (t.parent == null && t.name == "Shose") { shose = t.gameObject; break; } }
|
||||
}
|
||||
if (shose != null)
|
||||
{
|
||||
var h = shose.GetComponent<ShoseClickHandler>();
|
||||
if (h != null) h.ResetState();
|
||||
}
|
||||
|
||||
ShowPage(Page.Home);
|
||||
}
|
||||
|
||||
private System.Collections.IEnumerator StartInitialVoiceAndCameraRoutine()
|
||||
{
|
||||
float waitTime = 1f; // 默认等1秒
|
||||
var am = FindObjectOfType<AudioManager>();
|
||||
|
||||
// 实验刚开始,立刻激活鞋子,不等语音播完
|
||||
var shose = GameObject.Find("Shose");
|
||||
if (shose == null)
|
||||
{
|
||||
// 如果被禁用了,找它的最顶层引用
|
||||
var allTransforms = Resources.FindObjectsOfTypeAll<Transform>();
|
||||
foreach(var t in allTransforms) { if (t.parent == null && t.name == "Shose") { shose = t.gameObject; break; } }
|
||||
}
|
||||
if (shose != null)
|
||||
{
|
||||
var h = shose.GetComponent<ShoseClickHandler>();
|
||||
if (h == null) h = shose.AddComponent<ShoseClickHandler>();
|
||||
h.targetPoint = GameObject.Find("ShosePoint")?.transform;
|
||||
if (h.nextObject == null)
|
||||
{
|
||||
var chanraotuibu = GameObject.Find("chanraotuibu");
|
||||
if (chanraotuibu == null)
|
||||
{
|
||||
var mi = GameObject.Find("manInjury");
|
||||
if (mi != null) chanraotuibu = mi.transform.Find("chanraotuibu")?.gameObject;
|
||||
}
|
||||
h.nextObject = chanraotuibu;
|
||||
}
|
||||
shose.SetActive(false);
|
||||
shose.SetActive(true);
|
||||
Debug.Log("PageController: 开场动画结束,Shose 已立刻激活");
|
||||
}
|
||||
|
||||
// 1. 强制播放第一句语音:“周围环境安全,我是救护志愿者,我可以帮助您吗”
|
||||
if (am != null)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
var autoClip = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>("Assets/Audio/people/周围环境安全,我是救护志愿者,我可以帮助您吗.mp3");
|
||||
if (autoClip != null)
|
||||
{
|
||||
am.PlayVoice(autoClip);
|
||||
waitTime = autoClip.length + 1f;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Debug.Log($"PageController: 开始等待 {waitTime} 秒以切换摄像机并激活鞋子");
|
||||
yield return new WaitForSeconds(waitTime);
|
||||
|
||||
// 2. 切换到 camera3
|
||||
if (am != null) am.SwitchToCamera3();
|
||||
}
|
||||
|
||||
private void HideShose()
|
||||
{
|
||||
var shose = GameObject.Find("Shose");
|
||||
if (shose != null)
|
||||
{
|
||||
shose.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user