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