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;
|
|
|
// 状态机
|
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();
|
|
// 添加状态
|
// 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("启动流程完成");
|
};
|
}
|
|
|
|
}
|
|