diff --git a/unity/Assets/Scenes/Gameplay.unity b/unity/Assets/Scenes/Gameplay.unity index fc2d259..680d3e1 100644 --- a/unity/Assets/Scenes/Gameplay.unity +++ b/unity/Assets/Scenes/Gameplay.unity @@ -371,7 +371,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: darknessMaterial: {fileID: 2100000, guid: 6dd18d2379aff3040813ab8005b1898a, type: 2} - debugShowAll: 1 + debugShowAll: 0 minBrightness: 0 darknessColor: {r: 0.01, g: 0.01, b: 0.02, a: 1} lightSoftness: 1 diff --git a/unity/Assets/Scenes/MainMenu.unity b/unity/Assets/Scenes/MainMenu.unity index 5b1ca31..ecfde39 100644 --- a/unity/Assets/Scenes/MainMenu.unity +++ b/unity/Assets/Scenes/MainMenu.unity @@ -885,8 +885,7 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 897692926} + m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &574406657 @@ -1355,20 +1354,20 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 897692925} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1022684515} - {fileID: 1048541269} - m_Father: {fileID: 574406656} + m_Father: {fileID: 1036666439} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} + m_AnchoredPosition: {x: 960, y: 540} + m_SizeDelta: {x: 1920, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &897692927 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1918,10 +1917,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dfb474cbd721479419d2ce88a2701448, type: 3} m_Name: m_EditorClassIdentifier: - titleText: {fileID: 0} - titleImage: {fileID: 63499461} startButton: {fileID: 1036827528} - storyReplayButton: {fileID: 977847656} + settingsButton: {fileID: 0} creditsButton: {fileID: 995992462} quitButton: {fileID: 0} settingsPanel: {fileID: 0} @@ -2006,6 +2003,7 @@ RectTransform: - {fileID: 1535145891} - {fileID: 63499463} - {fileID: 1440709690} + - {fileID: 897692926} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -2344,10 +2342,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dfb474cbd721479419d2ce88a2701448, type: 3} m_Name: m_EditorClassIdentifier: - titleText: {fileID: 0} - titleImage: {fileID: 0} startButton: {fileID: 0} - storyReplayButton: {fileID: 0} + settingsButton: {fileID: 0} creditsButton: {fileID: 0} quitButton: {fileID: 0} settingsPanel: {fileID: 2013394273} diff --git a/unity/Assets/UI/MainMenuUIController.cs b/unity/Assets/UI/MainMenuUIController.cs index 2bce3d2..f7355fc 100644 --- a/unity/Assets/UI/MainMenuUIController.cs +++ b/unity/Assets/UI/MainMenuUIController.cs @@ -4,22 +4,19 @@ using UnityEngine.UI; namespace GameFramework { /// - /// 主菜单 UI 控制器(游戏封面)。 - /// 包含游戏标题 + 开始游戏/剧情回放/制作人员按钮。 + /// 主菜单 UI 控制器。 + /// 支持开始游戏、设置、制作人员、退出游戏。 + /// 修复:场景重载后自动重新查找 UI 引用,避免 DontDestroyOnLoad 导致的空引用问题。 /// public class MainMenuUIController : MonoBehaviour { - [Header("标题")] - [SerializeField] Text titleText; - [SerializeField] Image titleImage; - [Header("Buttons")] [SerializeField] Button startButton; - [SerializeField] Button storyReplayButton; + [SerializeField] Button settingsButton; [SerializeField] Button creditsButton; [SerializeField] Button quitButton; - [Header("Settings Panel (placeholder)")] + [Header("Settings Panel")] [SerializeField] GameObject settingsPanel; [SerializeField] Button settingsBackButton; @@ -29,23 +26,38 @@ namespace GameFramework void Start() { - Debug.Log("[MainMenu] creditsButton=" + (creditsButton != null ? creditsButton.name : "NULL") + " creditsPanel=" + (creditsPanel != null ? creditsPanel.name : "NULL")); + // 自动查找(解决场景重载后引用失效问题) + if (startButton == null) + startButton = FindButton("StartButton"); + if (settingsButton == null) + settingsButton = FindButton("SettingsButton"); + if (creditsButton == null) + creditsButton = FindButton("CreditsButton"); + if (quitButton == null) + quitButton = FindButton("QuitButton"); + + if (settingsPanel == null) + settingsPanel = GameObject.Find("SettingsPanel"); + if (settingsBackButton == null && settingsPanel != null) + settingsBackButton = settingsPanel.GetComponentInChildren