using UnityEngine;
|
|
/// <summary>
|
/// 平台工厂类,用于创建对应平台的实现
|
/// </summary>
|
public static class PlatformFactory
|
{
|
private static IPlatformService _currentPlatform;
|
private static PlatformType? _forcedPlatformType;
|
|
/// <summary>
|
/// 获取当前平台实例
|
/// </summary>
|
public static IPlatformService GetCurrent()
|
{
|
if (_currentPlatform == null)
|
{
|
_currentPlatform = CreatePlatform();
|
}
|
return _currentPlatform;
|
}
|
|
/// <summary>
|
/// 强制指定平台类型(用于测试)
|
/// </summary>
|
public static void ForcePlatform(PlatformType platformType)
|
{
|
_forcedPlatformType = platformType;
|
_currentPlatform = null; // 重置当前平台
|
}
|
|
/// <summary>
|
/// 创建平台实例
|
/// </summary>
|
private static IPlatformService CreatePlatform()
|
{
|
PlatformType platformType = DetectPlatformType();
|
|
switch (platformType)
|
{
|
case PlatformType.WeChat:
|
Debug.Log("[PlatformFactory] 创建微信小游戏平台实例");
|
return new WeChatPlatform();
|
|
case PlatformType.Douyin:
|
Debug.Log("[PlatformFactory] 创建抖音小游戏平台实例");
|
return new DouyinPlatform();
|
|
case PlatformType.Vivo:
|
Debug.Log("[PlatformFactory] 创建vivo小游戏平台实例");
|
return new VivoPlatform();
|
|
case PlatformType.Standalone:
|
default:
|
Debug.Log("[PlatformFactory] 创建编辑器测试平台实例");
|
return new StandalonePlatform();
|
}
|
}
|
|
/// <summary>
|
/// 检测当前平台类型
|
/// </summary>
|
private static PlatformType DetectPlatformType()
|
{
|
// 如果强制指定了平台类型,使用强制类型
|
if (_forcedPlatformType.HasValue)
|
{
|
Debug.Log($"[PlatformFactory] 使用强制指定的平台类型: {_forcedPlatformType.Value}");
|
return _forcedPlatformType.Value;
|
}
|
|
#if UNITY_EDITOR
|
// Unity 编辑器环境
|
return PlatformType.Standalone;
|
#elif UNITY_WEBGL
|
// WebGL 平台,需要通过 JavaScript 检测具体平台
|
// TODO: 通过 Application.ExternalEval 检测微信、抖音等平台
|
// 暂时默认返回微信
|
return PlatformType.WeChat;
|
#else
|
// 其他平台默认为 Standalone
|
return PlatformType.Standalone;
|
#endif
|
}
|
}
|