2025-04-22 17:16:40 +08:00

155 lines
4.2 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
namespace TEngine
{
/// <summary>
/// 强制更新类型。
/// </summary>
public enum UpdateStyle
{
/// <summary>
/// 强制更新(不更新无法进入游戏。)
/// </summary>
Force = 1,
/// <summary>
/// 非强制(不更新可以进入游戏。)
/// </summary>
Optional = 2,
}
/// <summary>
/// 是否提示更新。
/// </summary>
public enum UpdateNotice
{
/// <summary>
/// 更新存在提示。
/// </summary>
Notice = 1,
/// <summary>
/// 更新非提示。
/// </summary>
NoNotice = 2,
}
[CreateAssetMenu(menuName = "TEngine/UpdateSetting", fileName = "UpdateSetting")]
public class UpdateSetting : ScriptableObject
{
/// <summary>
/// 项目名称。
/// </summary>
[SerializeField]
private string projectName = "Demo";
public bool Enable
{
get
{
#if ENABLE_HYBRIDCLR
return true;
#else
return false;
#endif
}
}
[Header("Auto sync with [HybridCLRGlobalSettings]")]
public List<string> HotUpdateAssemblies = new List<string>() {"GameProto.dll", "GameLogic.dll" };
[Header("Need manual setting!")]
public List<string> AOTMetaAssemblies = new List<string>() { "mscorlib.dll", "System.dll", "System.Core.dll", "TEngine.Runtime.dll" ,"UniTask.dll", "YooAsset.dll"};
/// <summary>
/// Dll of main business logic assembly
/// </summary>
public string LogicMainDllName = "GameLogic.dll";
/// <summary>
/// 程序集文本资产打包Asset后缀名
/// </summary>
public string AssemblyTextAssetExtension = ".bytes";
/// <summary>
/// 程序集文本资产资源目录
/// </summary>
public string AssemblyTextAssetPath = "AssetRaw/DLL";
[Header("更新设置")]
public UpdateStyle UpdateStyle = UpdateStyle.Force;
public UpdateNotice UpdateNotice = UpdateNotice.Notice;
/// <summary>
/// 资源服务器地址。
/// </summary>
[SerializeField]
private string ResDownLoadPath = "http://127.0.0.1:8081";
/// <summary>
/// 资源服务备用地址。
/// </summary>
[SerializeField]
private string FallbackResDownLoadPath = "http://127.0.0.1:8082";
/// <summary>
/// 获取资源下载路径。
/// </summary>
public string GetResDownLoadPath()
{
return Path.Combine(ResDownLoadPath, projectName, GetPlatformName()).Replace("\\", "/");
}
/// <summary>
/// 获取备用资源下载路径。
/// </summary>
public string GetFallbackResDownLoadPath()
{
return Path.Combine(FallbackResDownLoadPath, projectName, GetPlatformName()).Replace("\\", "/");
}
/// <summary>
/// 获取当前的平台名称。
/// </summary>
/// <returns>平台名称。</returns>
public static string GetPlatformName()
{
#if UNITY_ANDROID
return "Android";
#elif UNITY_IOS
return "IOS";
#elif UNITY_WEBGL
return "WebGL";
#else
switch (Application.platform)
{
case RuntimePlatform.WindowsEditor:
return "Windows64";
case RuntimePlatform.WindowsPlayer:
return "Windows64";
case RuntimePlatform.OSXEditor:
case RuntimePlatform.OSXPlayer:
return "MacOS";
case RuntimePlatform.IPhonePlayer:
return "IOS";
case RuntimePlatform.Android:
return "Android";
case RuntimePlatform.WebGLPlayer:
return "WebGL";
case RuntimePlatform.PS5:
return "PS5";
default:
throw new NotSupportedException($"Platform '{Application.platform.ToString()}' is not supported.");
}
#endif
}
}
}