chore: initial commit
This commit is contained in:
30
Assets/Scripts/Core/GameServiceRegistrar.cs
Normal file
30
Assets/Scripts/Core/GameServiceRegistrar.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user