summaryrefslogtreecommitdiff
path: root/WorldlineKeepers/Assets/Scripts/Application/ApplicationMain.cs
blob: 18211f06b61a2de3849e9c27e1814b4132be083d (plain)
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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace WK
{

    /// <summary>
    /// 主循环,所有子系统的更新理论上都走这里的循环
    /// </summary>
    public class ApplicationMain : Singleton<ApplicationMain>   
    {
        public delegate void ApplicationCallback();

        #region 事件
        public event ApplicationCallback onAwakeHandler;
        public event ApplicationCallback onStartHandler;
        public event ApplicationCallback onUpdateHandler;
        public event ApplicationCallback onFixedUpdateHandler;
        public event ApplicationCallback onApplicationQuitHandler;
        public event ApplicationCallback onDestroyHandler;
        public event ApplicationCallback onApplicationPauseHandler;
        #endregion

        public void OnAwake()
        {
            onAwakeHandler?.Invoke();

            GamePhaseManager.Instance.OnAwake();

        }

        public void OnStart()
        {
            onStartHandler?.Invoke();

            GamePhaseManager.Instance.OnStart();
        }

        public void OnUpdate()
        {
            onUpdateHandler?.Invoke();

            GamePhaseManager.Instance.OnUpdate();
        }

        public void OnFixedUpdate()
        {
            onFixedUpdateHandler?.Invoke();

            GamePhaseManager.Instance.OnFixedUpdate();

        }

        public void OnDestroy()
        {
            onDestroyHandler?.Invoke();

            GamePhaseManager.Instance.OnDestroy();
        }

        public void OnApplicationQuit()
        {
            onApplicationQuitHandler?.Invoke();

            GamePhaseManager.Instance.OnApplicationQuit();
        }

        public void OnApplicationPause()
        {
            onApplicationPauseHandler?.Invoke();

            GamePhaseManager.Instance.OnApplicationPause();
        }

    }

}