三国卡牌客户端基础资源仓库
yyl
2025-04-23 7816f15f2e98a0faa2bdbc50307c7506cbb9a6b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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("启动流程完成");
        };
    }
    
    
 
}