Fix VideoPanel reference, automatically find Canvas/VideoPanel and add components if missing

This commit is contained in:
yangbear
2026-07-10 04:41:26 +08:00
parent 745b11b7f0
commit 80cb7598e6
4 changed files with 57 additions and 1 deletions
+14 -1
View File
@@ -134,9 +134,22 @@ public class PingClickHandler : MonoBehaviour
// 隐藏视频面板 // 隐藏视频面板
var videoController = FindObjectOfType<VideoController>(true); var videoController = FindObjectOfType<VideoController>(true);
if (videoController != null) if (videoController == null)
{
var allT = Resources.FindObjectsOfTypeAll<Transform>();
foreach (var t in allT)
{
if (t.name == "VideoPanel" && t.parent != null && t.parent.name == "Canvas")
{
t.gameObject.SetActive(false);
break;
}
}
}
else
{ {
videoController.StopVideo(); videoController.StopVideo();
videoController.gameObject.SetActive(false);
} }
} }
} }
@@ -151,11 +151,28 @@ public class ShoseClickHandler : MonoBehaviour
// 显示 VideoPanel 并播放视频 // 显示 VideoPanel 并播放视频
var videoController = FindObjectOfType<VideoController>(true); var videoController = FindObjectOfType<VideoController>(true);
if (videoController == null)
{
var allT = Resources.FindObjectsOfTypeAll<Transform>();
foreach (var t in allT)
{
if (t.name == "VideoPanel" && t.parent != null && t.parent.name == "Canvas")
{
videoController = t.gameObject.AddComponent<VideoController>();
break;
}
}
}
if (videoController != null) if (videoController != null)
{ {
videoController.gameObject.SetActive(true); videoController.gameObject.SetActive(true);
videoController.PlayVideo("tuoXieZi.mp4"); videoController.PlayVideo("tuoXieZi.mp4");
} }
else
{
Debug.LogError("[ShoseClick] 未找到 VideoPanel,无法播放视频");
}
} }
public void ResetState() public void ResetState()
@@ -178,6 +195,18 @@ public class ShoseClickHandler : MonoBehaviour
videoController.StopVideo(); videoController.StopVideo();
videoController.gameObject.SetActive(false); videoController.gameObject.SetActive(false);
} }
else
{
var allT = Resources.FindObjectsOfTypeAll<Transform>();
foreach (var t in allT)
{
if (t.name == "VideoPanel" && t.parent != null && t.parent.name == "Canvas")
{
t.gameObject.SetActive(false);
break;
}
}
}
var cam2 = GameObject.Find("camera2"); var cam2 = GameObject.Find("camera2");
var cam3 = GameObject.Find("camera3"); var cam3 = GameObject.Find("camera3");
+11
View File
@@ -409,6 +409,17 @@ public class PageController : MonoBehaviour
float waitTime = 1f; // 默认等1秒 float waitTime = 1f; // 默认等1秒
var am = FindObjectOfType<AudioManager>(); var am = FindObjectOfType<AudioManager>();
// --- 新增:强制隐藏视频面板 ---
var allT = Resources.FindObjectsOfTypeAll<Transform>();
foreach (var t in allT)
{
if (t.name == "VideoPanel" && t.parent != null && t.parent.name == "Canvas")
{
t.gameObject.SetActive(false);
}
}
// ------------------------------
// 实验刚开始,立刻激活鞋子,不等语音播完 // 实验刚开始,立刻激活鞋子,不等语音播完
var shose = GameObject.Find("Shose"); var shose = GameObject.Find("Shose");
if (shose == null) if (shose == null)
+3
View File
@@ -18,7 +18,10 @@ public class VideoController : MonoBehaviour
private void Awake() private void Awake()
{ {
if (_rawImage == null) _rawImage = GetComponent<RawImage>(); if (_rawImage == null) _rawImage = GetComponent<RawImage>();
if (_rawImage == null) _rawImage = gameObject.AddComponent<RawImage>();
if (_videoPlayer == null) _videoPlayer = GetComponentInChildren<VideoPlayer>(); if (_videoPlayer == null) _videoPlayer = GetComponentInChildren<VideoPlayer>();
if (_videoPlayer == null) _videoPlayer = gameObject.AddComponent<VideoPlayer>();
if (_videoPlayer != null) if (_videoPlayer != null)
{ {