using System.Collections; using System.Collections.Generic; using UnityEngine; using Cysharp.Threading; using Cysharp.Threading.Tasks; using System; using DG.Tweening; public class Launch : MonoBehaviour { public string versionUrl; // 是否开启热更 public bool IsHotupdate = false; public bool IsUseSDK = false; public bool versionCheck = false; public bool IsUseAssetBundle = false; #if UNITY_EDITOR public bool EnableNetLog = true; #else public bool EnableNetLog = false; #endif // 状态机 private LaunchStateMachine stateMachine; public static Launch Instance { get { return m_Instance; } } private static Launch m_Instance; private void Awake() { if (m_Instance != null) { Debug.LogError("Launch Instance is not null"); return; } m_Instance = this; } // 启动入口 async void Start() { Debug.Log("Launch Start"); DOTween.Init(); // 1. 打开加载界面 LaunchLoadingWin.OpenWindow(); // 2. 初始化状态机 InitStateMachine(); // 3. 启动状态机 await stateMachine.Start(); } // 初始化状态机 private void InitStateMachine() { stateMachine = new LaunchStateMachine(); if (versionCheck) { // 添加状态 // 1. 初始化SDK stateMachine.AddState(new InitSDKState()); // 2. 资源解压 stateMachine.AddState(new ExtractResourcesState()); // 3. 版本检查 CheckVersionState checkVersionState = new CheckVersionState(versionUrl); stateMachine.AddState(checkVersionState); // 4. 热更新 stateMachine.AddState(new HotUpdateState(IsHotupdate, LaunchUtility.UpdateType.None)); } // 5. 进入热更新程序集 stateMachine.AddState(new EnterHotUpdateAssemblyState()); // 注册状态机完成事件 stateMachine.OnCompleted += () => { Debug.Log("启动流程完成"); }; } }