using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
//该公共mono模块用来解决别的不继承mono类的对象使用定时执行于协程方法
public class PublicMonoModle : AutoSingleton<PublicMonoModle>
{
//声明委托事件来存储函数
public event UnityAction UpdateEvent;
public event UnityAction LateUpdateEvent;
public event UnityAction FixedUpdateEvent;
public void AddUpdateEvent(UnityAction action)
{
UpdateEvent += action;
}
public void RemoveUpdateEvent(UnityAction action)
{
UpdateEvent -= action;
}
public void AddLateUpdateEvent(UnityAction action)
{
LateUpdateEvent += action;
}
public void RemoveLateUpdateEvent(UnityAction action)
{
LateUpdateEvent -= action;
}
public void AddFixedUpdateEvent(UnityAction action)
{
FixedUpdateEvent += action;
}
public void RemoveFixedUpdateEvent(UnityAction action)
{
FixedUpdateEvent -= action;
}
private void Update()
{
UpdateEvent?.Invoke();
}
private void FixedUpdate()
{
FixedUpdateEvent?.Invoke();
}
private void LateUpdate()
{
LateUpdateEvent?.Invoke();
}
}
//有关于协程开启的问题在非mono类中写 核心就是把没有mono的类当作有mono的类来写
//只不过函数执行时是传入当前公共mono事件
公共Mono模块的主要作用 Unity游戏开发当中,继承MonoBehaviour的类, 可以使用生命周期函数,可以开启协同程序。 我们可以利用生命周期函数中的Update、FixedUpdate、LateUpdate等函数, 进行帧更新或定时更新,用来处理游戏逻辑。 可以利用协同程序分时分步的处理游戏逻辑,比如异步加载,复杂逻辑分步等。
公共Mono模块的主要作用 但是对于没有继承MonoBehaviour的脚本,我们无法使用这些内容来处理逻辑。 在不进行任何处理的情况下,我们无法在不继承MonoBehaviour的脚本中进行帧 更新或者定时更新逻辑,也无法利用协同程序分时分步执行逻辑。 因此公共Mono模块的主要作用是: 让不继承MonoBehaviour的脚本也能 1.利用帧更新或定时更新处理逻辑 2.利用协同程序处理逻辑
公共Mono模块的主要作用 除了刚才提到的主要作用 由于Unity当中过多脚本中的过多帧更新或定时更新函数会对性能有一定的影响 在满足主要作用的同时 我们还可以对它们进行集中化管理 减少Unity中多脚本中帧更新或定时更新函数的数量 从而来提升一定的性能