using UnityEngine; namespace JEngine.Core { public partial class Updater : MonoBehaviour { [SerializeField] [Tooltip("热更资源下载地址")] private string resourceUrl = "http://127.0.0.1:7888/"; [SerializeField] [Tooltip("热更资源下载备用地址")] private string fallbackUrl = "http://127.0.0.1:7888/"; [SerializeField] private string gameScene = "Assets/HotUpdateResources/Main/Scene/Game.unity"; [SerializeField] private string mainPackageName = "Main"; [Tooltip("Simulate是开发模式,Standalone是离线模式,Remote是真机模式")] [SerializeField] private UpdateMode mode = UpdateMode.Simulate; /// /// 单例 /// public static Updater Instance => _instance; /// /// 主包 /// public static string MainPackageName => _instance.mainPackageName; /// /// 模式 /// public static UpdateMode Mode => _instance.mode; /// /// 热更资源下载地址 /// public static string ResourceUrl => _instance.resourceUrl; /// /// 热更资源下载备用地址 /// public static string FallbackUrl => _instance.fallbackUrl; /// /// 更新模式 /// public enum UpdateMode : byte { Simulate = 0, Standalone = 1, Remote = 2, } /// /// 单例 /// private static Updater _instance; /// /// 更新配置 /// private void Awake() { if (_instance != null) { DestroyImmediate(gameObject); return; } _instance = this; DontDestroyOnLoad(gameObject); } /// /// 给按钮拖拽赋值的点击事件,下载更新,用于初始化主包 /// public void StartUpdate() { var updater = FindObjectOfType(); updater.sceneName = gameScene; _ = AssetMgr.UpdatePackage(mainPackageName, updater); } private void OnDestroy() { MessageBox.Dispose(); } public static void Quit() { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif } } }