把代码核心逻辑移入热更工程,热更工程生成编译后可以直接Copy dll 和 mdb文件到UnityAsset目录下

把代码核心逻辑移入热更工程,热更工程生成编译后可以直接Copy dll 和 mdb文件到UnityAsset目录下
This commit is contained in:
ALEXTANG
2022-05-23 13:49:07 +08:00
parent 2e7263101a
commit 572b768ce2
82 changed files with 13764 additions and 2 deletions

View File

@@ -0,0 +1,64 @@
using UnityEngine;
using UnityEngine.Events;
namespace TEngineCore
{
/// <summary>
/// Mono管理者
/// </summary>
public class MonoController : MonoBehaviour
{
private event UnityAction updateEvent;
private event UnityAction fixedUpdateEvent;
void Update()
{
if (updateEvent != null)
{
updateEvent();
}
}
void FixedUpdate()
{
if (fixedUpdateEvent != null)
{
fixedUpdateEvent();
}
}
public void AddFixedUpdateListener(UnityAction fun)
{
fixedUpdateEvent += fun;
}
public void RemoveFixedUpdateListener(UnityAction fun)
{
fixedUpdateEvent -= fun;
}
/// <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;
}
public void Release()
{
updateEvent = null;
fixedUpdateEvent = null;
}
}
}

View File

@@ -0,0 +1,144 @@
using System.Collections;
using System.ComponentModel;
using TEngineCore;
using UnityEngine;
using UnityEngine.Events;
namespace TEngineCore
{
public class MonoManager : TSingleton<MonoManager>
{
private MonoController controller;
public override void Release()
{
StopAllCoroutine();
controller.Release();
controller = null;
base.Release();
}
public MonoManager()
{
GameObject obj = new GameObject("MonoManager");
controller = obj.AddComponent<MonoController>();
#if UNITY_EDITOR
GameObject tEngine = SingletonMgr.Root;
if (tEngine != null)
{
obj.transform.SetParent(tEngine.transform);
}
#endif
}
~MonoManager()
{
StopAllCoroutine();
controller.Release();
controller = null;
}
#region UnityUpdate/FixedUpdate
/// <summary>
/// 为给外部提供的 添加帧更新事件
/// </summary>
/// <param name="fun"></param>
public void AddUpdateListener(UnityAction fun)
{
controller.AddUpdateListener(fun);
}
/// <summary>
/// 为给外部提供的 添加物理帧更新事件
/// </summary>
/// <param name="fun"></param>
public void AddFixedUpdateListener(UnityAction fun)
{
controller.AddFixedUpdateListener(fun);
}
/// <summary>
/// 移除帧更新事件
/// </summary>
/// <param name="fun"></param>
public void RemoveUpdateListener(UnityAction fun)
{
controller.RemoveUpdateListener(fun);
}
#endregion
#region Coroutine
public Coroutine StartCoroutine(string methodName)
{
if (controller == null)
{
return null;
}
return controller.StartCoroutine(methodName);
}
public Coroutine StartCoroutine(IEnumerator routine)
{
if (controller == null)
{
return null;
}
return controller.StartCoroutine(routine);
}
public Coroutine StartCoroutine(string methodName, [DefaultValue("null")] object value)
{
if (controller == null)
{
return null;
}
return controller.StartCoroutine(methodName, value);
}
public void StopCoroutine(string methodName)
{
if (controller == null)
{
return;
}
controller.StopCoroutine(methodName);
}
public void StopCoroutine(IEnumerator routine)
{
if (controller == null)
{
return;
}
controller.StopCoroutine(routine);
}
public void StopCoroutine(Coroutine routine)
{
if (controller == null)
{
return;
}
controller.StopCoroutine(routine);
}
public void StopAllCoroutine()
{
if (controller != null)
{
controller.StopAllCoroutines();
}
}
#endregion
#region GC
public void GC()
{
System.GC.Collect();
}
#endregion
}
}