unity---公共模块MonoController

公共模块

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

代码#

image
image

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

Mgr另外的作用#

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

代码汇总#

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<MonoMgr>
{
    // Start is called before the first frame update
    private MonoController controller;
    public MonoMgr()
    {
        GameObject obj = new GameObject("MonoController");
        controller = obj.AddComponent<MonoController>();
    }

    // Update is called once per frame
    public void AddUpdateListener(UnityAction fun){
        controller.AddUpdateListener(fun);
    }
    public void RemoveUpdateListener(UnityAction fun){
        controller.RemoveUpdateListener(fun);
    }
	   public void AddUpdateListener(UnityAction fun){
        controller.AddUpdateListener(fun);
    }
    public void RemoveUpdateListener(UnityAction fun){
        controller.RemoveUpdateListener(fun);
    }
    public Coroutine StartCoroutine(IEnumerator routine){
        return controller.StartCoroutine(routine);
    }
    public Coroutine StartCoroutine(string methodName){
        return controller.StartCoroutine(methodName);
    }
    public void StopCoroutine(IEnumerator routine){
        controller.StopCoroutine(routine);
    }

}

用法示范#

  1. 新建一个继承至MonoBehaviour的类
    image
  2. 在新建一个需要执行的类
    image
  3. 将第一个类挂载到物体上,即可。
    image
posted @   lxp_blog  阅读(136)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示
主题色彩