公共Mono模块

This commit is contained in:
xhxy 2025-04-19 22:00:30 +08:00
parent ae2237a011
commit 3efdf65bdb
6 changed files with 147 additions and 1 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e30bce2b8dc3a1542ab441145ccbca6a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 981b118304ab49c45bf5c15ce9853338
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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);
}*/
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4de48ca79531e9942b06cabbc98dac8b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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