using UnityEngine; using UnityEngine.UI; using BaseGames.Core; using BaseGames.Core.Assets; using BaseGames.Core.Events; namespace BaseGames.UI { /// /// 暂停菜单控制器(架构 10_UIModule §5)。 /// 挂载在 Canvas_Menu → PauseMenuPanel GameObject 上。 /// 按钮绑定在 Awake 中完成;由 UIManager 负责面板开关。 /// public class PauseMenuController : MonoBehaviour { [SerializeField] private UIManager _uiManager; [SerializeField] private GameObject _settingsRoot; // SettingsPanel 根 GameObject [Header("按钮引用")] [SerializeField] private Button _btnResume; [SerializeField] private Button _btnSettings; [SerializeField] private Button _btnMainMenu; [SerializeField] private Button _btnQuit; [Header("Event Channels")] [SerializeField] private VoidEventChannelSO _onResumeRequested; [SerializeField] private SceneLoadRequestEventChannelSO _onSceneLoadRequest; private void Awake() { _btnResume.onClick.AddListener(Resume); _btnSettings.onClick.AddListener(OpenSettings); _btnMainMenu.onClick.AddListener(GoToMainMenu); _btnQuit.onClick.AddListener(Application.Quit); } // ── 按钮回调 ────────────────────────────────────────────────────────── private void Resume() { _onResumeRequested?.Raise(); _uiManager.CloseTopPanel(); } private void OpenSettings() { if (_settingsRoot != null) _uiManager.OpenPanel(_settingsRoot); } private void GoToMainMenu() { _uiManager.CloseTopPanel(); _onSceneLoadRequest?.Raise(new SceneLoadRequest { SceneName = AddressKeys.SceneMainMenu, TransitionType = TransitionType.Scene, ShowLoadingScreen = false, }); } } }