diff --git a/Assets/Scripts/ProjectBase/Mono.meta b/Assets/Scripts/ProjectBase/Mono.meta
new file mode 100644
index 0000000..d87c143
--- /dev/null
+++ b/Assets/Scripts/ProjectBase/Mono.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e30bce2b8dc3a1542ab441145ccbca6a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/ProjectBase/Mono/MonoController.cs b/Assets/Scripts/ProjectBase/Mono/MonoController.cs
new file mode 100644
index 0000000..455ae68
--- /dev/null
+++ b/Assets/Scripts/ProjectBase/Mono/MonoController.cs
@@ -0,0 +1,48 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Events;
+
+///
+/// Mono的管理类
+/// 1.声明周期函数
+/// 2.事件
+/// 3.协程
+///
+public class MonoController : MonoBehaviour
+{
+ private event UnityAction updateEvent;
+
+ void Start()
+ {
+ DontDestroyOnLoad(this.gameObject);
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ if (updateEvent != null)
+ {
+ updateEvent();
+ }
+ }
+
+ ///
+ /// 给外部提供的添加帧更新事件的函数
+ ///
+ ///
+ public void AddUpdateListener(UnityAction fun)
+ {
+ updateEvent += fun;
+ }
+
+ ///
+ /// 提供给外部 用于移除帧更新事件函数
+ ///
+ ///
+ public void RemoveUpdateListener(UnityAction fun)
+ {
+ updateEvent -= fun;
+ }
+
+}
diff --git a/Assets/Scripts/ProjectBase/Mono/MonoController.cs.meta b/Assets/Scripts/ProjectBase/Mono/MonoController.cs.meta
new file mode 100644
index 0000000..b707d40
--- /dev/null
+++ b/Assets/Scripts/ProjectBase/Mono/MonoController.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 981b118304ab49c45bf5c15ce9853338
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/ProjectBase/Mono/MonoMgr.cs b/Assets/Scripts/ProjectBase/Mono/MonoMgr.cs
new file mode 100644
index 0000000..2510d47
--- /dev/null
+++ b/Assets/Scripts/ProjectBase/Mono/MonoMgr.cs
@@ -0,0 +1,58 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Events;
+
+///
+/// 可以提供给外部添加帧更新事件的方法
+/// 可以给外部添加协程的方法
+///
+public class MonoMgr : BaseManager
+{
+ private MonoController controller;
+
+ public MonoMgr()
+ {
+ //保证了MonoController的唯一性
+ GameObject obj = new GameObject("MonoController");
+ controller = obj.AddComponent();
+ }
+
+
+ ///
+ /// 给外部提供的添加帧更新事件的函数
+ ///
+ ///
+ public void AddUpdateListener(UnityAction fun)
+ {
+ controller.AddUpdateListener(fun);
+ // controller.StartCoroutine();
+
+ }
+
+ ///
+ /// 提供给外部 用于移除帧更新事件函数
+ ///
+ ///
+ public void RemoveUpdateListener(UnityAction fun)
+ {
+ controller.RemoveUpdateListener(fun);
+ }
+
+ ///
+ /// 封装一个协程,后续也可以添加方法来封装
+ ///
+ ///
+ ///
+ public Coroutine StartCoroutine(IEnumerator routine)
+ {
+ return controller.StartCoroutine(routine);
+ }
+
+ //这里可以继续封装别的Mono方法
+ /*public Coroutine StartCoroutine(IEnumerator routine)
+ {
+ return controller.StartCoroutine(routine);
+ }*/
+
+}
diff --git a/Assets/Scripts/ProjectBase/Mono/MonoMgr.cs.meta b/Assets/Scripts/ProjectBase/Mono/MonoMgr.cs.meta
new file mode 100644
index 0000000..7d2175d
--- /dev/null
+++ b/Assets/Scripts/ProjectBase/Mono/MonoMgr.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4de48ca79531e9942b06cabbc98dac8b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/ProjectBase/Test/Test.cs b/Assets/Scripts/ProjectBase/Test/Test.cs
index 509bc0f..74fa0a8 100644
--- a/Assets/Scripts/ProjectBase/Test/Test.cs
+++ b/Assets/Scripts/ProjectBase/Test/Test.cs
@@ -2,12 +2,22 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+public class TestTest
+{
+ public void Update()
+ {
+ Debug.Log("TestTest");
+ }
+}
+
+
public class Test : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
-
+ TestTest t = new TestTest();
+ MonoMgr.GetInstance().AddUpdateListener(t.Update);
}
// Update is called once per frame