43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
using UnityEngine;
|
||
using BaseGames.Core;
|
||
|
||
namespace BaseGames.Platform
|
||
{
|
||
/// <summary>
|
||
/// 平台服务引导组件(架构 16_SupportingModules §3.1)。
|
||
/// 在场景加载最早阶段(DefaultExecutionOrder = -200)检测平台并向 ServiceLocator 注入实现。
|
||
/// ⚠️ 使用 PlatformBootstrap MonoBehaviour + ServiceLocator 模式,非静态 PlatformManager。
|
||
/// </summary>
|
||
[DefaultExecutionOrder(-200)]
|
||
public class PlatformBootstrap : MonoBehaviour
|
||
{
|
||
private IPlatformService _platform;
|
||
|
||
private async void Awake()
|
||
{
|
||
IPlatformService service;
|
||
|
||
#if UNITY_STANDALONE && STEAMWORKS_NET
|
||
service = new SteamPlatformService();
|
||
#else
|
||
service = new NullPlatformService();
|
||
#endif
|
||
|
||
bool ok = await service.InitializeAsync();
|
||
if (!ok)
|
||
{
|
||
Debug.LogWarning("[PlatformBootstrap] 平台服务初始化失败,退回到 NullPlatformService。");
|
||
service = new NullPlatformService();
|
||
}
|
||
|
||
ServiceLocator.Register<IPlatformService>(service);
|
||
_platform = service;
|
||
Debug.Log($"[PlatformBootstrap] 已注册 {service.GetType().Name}。");
|
||
}
|
||
|
||
private void Update() => _platform?.RunCallbacks();
|
||
|
||
private void OnApplicationQuit() => _platform?.Shutdown();
|
||
}
|
||
}
|