using UnityEngine; using BaseGames.Core.Events; namespace BaseGames.Core { /// /// 在 Awake 时(最早执行)向 ServiceLocator 注册所有服务。 /// 挂载在 Persistent 场景的根 GameObject 上。 /// [DefaultExecutionOrder(-2000)] public class GameServiceRegistrar : MonoBehaviour { [SerializeField] private DeathRespawnService _deathRespawnService; [SerializeField] private SceneService _sceneService; [SerializeField] private EventChannelRegistry _eventChannelRegistry; private void Awake() { // 注册 NullAudioService 作为兜底;Phase 2 Audio 模块 Awake 后会用真实实现覆盖 ServiceLocator.RegisterIfAbsent(new NullAudioService()); if (_deathRespawnService) ServiceLocator.Register(_deathRespawnService); if (_sceneService) ServiceLocator.Register(_sceneService); if (_eventChannelRegistry) ServiceLocator.Register(_eventChannelRegistry); } } }