fix: Camera.main→GameObject.Find(Main Camera) 解决摄像机不同步
根因: Camera.main在SwitchToCamera2禁用主摄像机后返回null,
PlayOpeningFlow/ReturnToHome无法重新启用主摄像机。
全部改用GameObject.Find("Main Camera")按名字查找。
This commit is contained in:
@@ -88,22 +88,18 @@ public class OpeningFlowController : MonoBehaviour
|
||||
{
|
||||
Debug.Log("[OpeningFlow] PlayOpeningFlow() 被调用");
|
||||
|
||||
// 每次播放前重置场景(支持重复播放)
|
||||
if (_manAnimator != null)
|
||||
{
|
||||
_manAnimator.gameObject.SetActive(true);
|
||||
_manAnimator.SetBool("IsStart", false);
|
||||
_manAnimator.SetBool("IsFull", false);
|
||||
}
|
||||
// 重置场景(支持重复播放)
|
||||
if (_manAnimator != null) { _manAnimator.gameObject.SetActive(true); _manAnimator.SetBool("IsStart", false); _manAnimator.SetBool("IsFull", false); }
|
||||
if (_man2Object != null) _man2Object.SetActive(true);
|
||||
if (_womanObject != null) _womanObject.SetActive(false);
|
||||
if (_manInjuryObject != null) _manInjuryObject.SetActive(false);
|
||||
if (_blackScreenPanel != null) _blackScreenPanel.SetActive(false);
|
||||
|
||||
var mainCam = Camera.main;
|
||||
if (mainCam != null) mainCam.enabled = true;
|
||||
var cam2 = GameObject.Find("camera2");
|
||||
if (cam2 != null) { var c = cam2.GetComponent<Camera>(); if (c != null) c.enabled = false; }
|
||||
// 用名字找主摄像机(Camera.main 在主摄像机关闭后返回 null)
|
||||
var mainCamGo = GameObject.Find("Main Camera");
|
||||
if (mainCamGo != null) { var c = mainCamGo.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; }
|
||||
|
||||
StartCoroutine(RunOpeningFlow(onComplete));
|
||||
}
|
||||
@@ -164,21 +160,12 @@ public class OpeningFlowController : MonoBehaviour
|
||||
|
||||
private void SwitchToCamera2()
|
||||
{
|
||||
var camera2Go = GameObject.Find("camera2");
|
||||
if (camera2Go != null)
|
||||
{
|
||||
var cam2 = camera2Go.GetComponent<Camera>();
|
||||
if (cam2 != null)
|
||||
{
|
||||
cam2.enabled = true;
|
||||
Debug.Log("[OpeningFlow] camera2 已启用");
|
||||
}
|
||||
else Debug.LogWarning("[OpeningFlow] camera2 上没有 Camera 组件");
|
||||
|
||||
var mainCam = Camera.main;
|
||||
if (mainCam != null) { mainCam.enabled = false; Debug.Log("[OpeningFlow] 主摄像机已禁用"); }
|
||||
}
|
||||
var cam2Go = GameObject.Find("camera2");
|
||||
if (cam2Go != null) { var c = cam2Go.GetComponent<Camera>(); if (c != null) { c.enabled = true; Debug.Log("[OpeningFlow] camera2 已启用"); } }
|
||||
else Debug.LogWarning("[OpeningFlow] 未找到 camera2");
|
||||
|
||||
var mainGo = GameObject.Find("Main Camera");
|
||||
if (mainGo != null) { var c = mainGo.GetComponent<Camera>(); if (c != null) { c.enabled = false; Debug.Log("[OpeningFlow] 主摄像机已禁用"); } }
|
||||
}
|
||||
|
||||
private IEnumerator FadeBlackScreen(float fromAlpha, float toAlpha)
|
||||
|
||||
@@ -362,13 +362,11 @@ public class PageController : MonoBehaviour
|
||||
{
|
||||
Debug.Log("PageController: [ReturnToHome] 返回首页并重置场景");
|
||||
|
||||
// 恢复 man 和 man2
|
||||
var man = GameObject.Find("man");
|
||||
if (man != null) man.SetActive(true);
|
||||
var man2 = GameObject.Find("man2");
|
||||
if (man2 != null) man2.SetActive(true);
|
||||
|
||||
// 隐藏实验专用物件
|
||||
var woman = GameObject.Find("woman");
|
||||
if (woman != null) woman.SetActive(false);
|
||||
var manInjury = GameObject.Find("manInjury");
|
||||
@@ -376,13 +374,12 @@ public class PageController : MonoBehaviour
|
||||
var medicalBox = GameObject.Find("medicalBox");
|
||||
if (medicalBox != null) medicalBox.SetActive(false);
|
||||
|
||||
// 恢复主摄像机
|
||||
var mainCam = Camera.main;
|
||||
if (mainCam != null) mainCam.enabled = true;
|
||||
var cam2 = GameObject.Find("camera2");
|
||||
if (cam2 != null) { var c = cam2.GetComponent<Camera>(); if (c != null) c.enabled = false; }
|
||||
// 用名字找主摄像机(Camera.main 在禁用后返回 null)
|
||||
var mainGo = GameObject.Find("Main Camera");
|
||||
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; }
|
||||
|
||||
// 重置 Animator 参数
|
||||
var manAnim = man != null ? man.GetComponent<Animator>() : null;
|
||||
if (manAnim != null) { manAnim.SetBool("IsStart", false); manAnim.SetBool("IsFull", false); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user