From 3efdf65bdbef935198a18166a3c7469982348e45 Mon Sep 17 00:00:00 2001
From: xhxy <2290327506@qq.com>
Date: Sat, 19 Apr 2025 22:00:30 +0800
Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=85=B1Mono=E6=A8=A1=E5=9D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Assets/Scripts/ProjectBase/Mono.meta          |  8 +++
 .../ProjectBase/Mono/MonoController.cs        | 48 +++++++++++++++
 .../ProjectBase/Mono/MonoController.cs.meta   | 11 ++++
 Assets/Scripts/ProjectBase/Mono/MonoMgr.cs    | 58 +++++++++++++++++++
 .../Scripts/ProjectBase/Mono/MonoMgr.cs.meta  | 11 ++++
 Assets/Scripts/ProjectBase/Test/Test.cs       | 12 +++-
 6 files changed, 147 insertions(+), 1 deletion(-)
 create mode 100644 Assets/Scripts/ProjectBase/Mono.meta
 create mode 100644 Assets/Scripts/ProjectBase/Mono/MonoController.cs
 create mode 100644 Assets/Scripts/ProjectBase/Mono/MonoController.cs.meta
 create mode 100644 Assets/Scripts/ProjectBase/Mono/MonoMgr.cs
 create mode 100644 Assets/Scripts/ProjectBase/Mono/MonoMgr.cs.meta

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;
+
+/// <summary>
+/// Mono������
+/// 1.�������ں���
+/// 2.�¼�
+/// 3.��
+/// </summary>
+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();
+        }
+    }
+
+    /// <summary>
+    /// ���ⲿ�ṩ������֡�����¼��ĺ���
+    /// </summary>
+    /// <param name="fun"></param>
+    public void AddUpdateListener(UnityAction fun)
+    {
+        updateEvent += fun;
+    }
+
+    /// <summary>
+    /// �ṩ���ⲿ �����Ƴ�֡�����¼�����
+    /// </summary>
+    /// <param name="fun"></param>
+    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;
+
+/// <summary>
+/// �����ṩ���ⲿ����֡�����¼��ķ���
+/// ���Ը��ⲿ����Э�̵ķ���
+/// </summary>
+public class MonoMgr : BaseManager<MonoMgr>
+{
+    private MonoController controller;
+
+    public MonoMgr()
+    {
+        //��֤��MonoController��Ψһ��
+        GameObject obj = new GameObject("MonoController");
+        controller = obj.AddComponent<MonoController>();
+    }
+
+
+    /// <summary>
+    /// ���ⲿ�ṩ������֡�����¼��ĺ���
+    /// </summary>
+    /// <param name="fun"></param>
+    public void AddUpdateListener(UnityAction fun)
+    {
+      controller.AddUpdateListener(fun);
+      //  controller.StartCoroutine();
+
+    }
+
+    /// <summary>
+    /// �ṩ���ⲿ �����Ƴ�֡�����¼�����
+    /// </summary>
+    /// <param name="fun"></param>
+    public void RemoveUpdateListener(UnityAction fun)
+    {
+       controller.RemoveUpdateListener(fun);
+    }
+
+    /// <summary>
+    /// ��װһ��Э��,����Ҳ�������ӷ�������װ
+    /// </summary>
+    /// <param name="routine"></param>
+    /// <returns></returns>
+    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