31 lines
1.1 KiB
C#
31 lines
1.1 KiB
C#
using UnityEngine;
|
||
using BaseGames.Core.Events;
|
||
|
||
namespace BaseGames.Core
|
||
{
|
||
/// <summary>
|
||
/// 在 Awake 时(最早执行)向 ServiceLocator 注册所有服务。
|
||
/// 挂载在 Persistent 场景的根 GameObject 上。
|
||
/// </summary>
|
||
[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<IAudioService>(new NullAudioService());
|
||
|
||
if (_deathRespawnService)
|
||
ServiceLocator.Register<IDeathRespawnService>(_deathRespawnService);
|
||
if (_sceneService)
|
||
ServiceLocator.Register<ISceneService>(_sceneService);
|
||
if (_eventChannelRegistry)
|
||
ServiceLocator.Register<IEventChannelRegistry>(_eventChannelRegistry);
|
||
}
|
||
}
|
||
}
|