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
}
}
}