using UnityEngine; namespace BaseGames.Input { /// /// 在运行时启用 InputReaderSO 的 ActionMap。 /// 挂在 Persistent 场景的 InputReaderHolder 上。 /// public sealed class InputReaderBootstrap : MonoBehaviour { [SerializeField] private InputReaderSO _inputReader; private void OnEnable() { if (_inputReader == null) { _inputReader = FindDefaultInputReader(); if (_inputReader == null) Debug.LogError("[InputReaderBootstrap] Could not find InputReaderSO by name or assignment!"); } } private void Start() { if (_inputReader != null) { _inputReader.LoadBindingOverrides(); // 从 PlayerPrefs 恢复用户自定义绑定 _inputReader.EnableGameplayInput(); } else { Debug.LogError("[InputReaderBootstrap.Start] _inputReader is NULL!"); } } private void OnDisable() { _inputReader?.DisableAllInput(); } private static InputReaderSO FindDefaultInputReader() { InputReaderSO[] readers = Resources.FindObjectsOfTypeAll(); foreach (InputReaderSO reader in readers) { if (reader != null && reader.name == "InputReader") return reader; } return null; } } }