unity---公共模块MonoController


公共模块

如果有很多类使用Update()函数,会导致性能浪费
如果函数统一在一个Update()中执行

代码


上述,需要将脚本挂载到物体上,
故新建了一个管理类MonoMgr

Mgr另外的作用

可以提供给外部添加协程的方法

代码汇总

MonoController

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class MonoController : MonoBehaviour
{
    // Start is called before the first frame update
    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;
    }
}

MonoMgr

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class MonoMgr : Singleton
{
    // Start is called before the first frame update
    private MonoController controller;
    public MonoMgr()
    {
        GameObject obj = new GameObject("MonoController");
        controller = obj.AddComponent();
    }

    // Update is called once per frame
    public void AddUpdateListener(UnityAction fun){
        controller.AddUpdateListener(fun);
    }
    public void RemoveUpdateListener(UnityAction fun){
        controller.RemoveUpdateListener(fun);
    }

}

用法示范

  1. 新建一个继承至MonoBehaviour的类
  2. 在新建一个需要执行的类
  3. 将第一个类挂载到物体上,即可。