公共模块

如果有很多类使用Update()函数,会导致性能浪费

如果函数统一在一个Update()中执行

代码



上述,需要将脚本挂载到物体上,

故新建了一个管理类MonoMgr



Mgr另外的作用

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





代码汇总

MonoController

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Events;
  5. public class MonoController : MonoBehaviour
  6. {
  7. // Start is called before the first frame update
  8. private event UnityAction updateEvent;
  9. void Start()
  10. {
  11. DontDestroyOnLoad(this.gameObject);
  12. }
  13. // Update is called once per frame
  14. void Update()
  15. {
  16. if(updateEvent!=null){
  17. updateEvent();
  18. }
  19. }
  20. public void AddUpdateListener(UnityAction fun){
  21. updateEvent += fun;
  22. }
  23. public void RemoveUpdateListener(UnityAction fun){
  24. updateEvent -= fun;
  25. }
  26. }

MonoMgr

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Events;
  5. public class MonoMgr : Singleton<MonoMgr>
  6. {
  7. // Start is called before the first frame update
  8. private MonoController controller;
  9. public MonoMgr()
  10. {
  11. GameObject obj = new GameObject("MonoController");
  12. controller = obj.AddComponent<MonoController>();
  13. }
  14. // Update is called once per frame
  15. public void AddUpdateListener(UnityAction fun){
  16. controller.AddUpdateListener(fun);
  17. }
  18. public void RemoveUpdateListener(UnityAction fun){
  19. controller.RemoveUpdateListener(fun);
  20. }
  21. public void AddUpdateListener(UnityAction fun){
  22. controller.AddUpdateListener(fun);
  23. }
  24. public void RemoveUpdateListener(UnityAction fun){
  25. controller.RemoveUpdateListener(fun);
  26. }
  27. public Coroutine StartCoroutine(IEnumerator routine){
  28. return controller.StartCoroutine(routine);
  29. }
  30. public Coroutine StartCoroutine(string methodName){
  31. return controller.StartCoroutine(methodName);
  32. }
  33. public void StopCoroutine(IEnumerator routine){
  34. controller.StopCoroutine(routine);
  35. }
  36. }

用法示范

  1. 新建一个继承至MonoBehaviour的类

  2. 在新建一个需要执行的类

  3. 将第一个类挂载到物体上,即可。

unity---公共模块MonoController的更多相关文章

  1. Atitit 图像处理 公共模块 矩阵扫描器

    Atitit 图像处理 公共模块 矩阵扫描器 1.1. 调用说明对矩阵像素遍历处理调用1 2. 矩阵扫描器主题结构1 2.1. 主要说明 从像素点开始填充矩阵1 2.2. 得到模板中心点所对应的图像坐 ...

  2. 谈谈CommonsChunkPlugin抽取公共模块

    引言 webpack插件CommonsChunkPlugin的主要作用是抽取webpack项目入口chunk的公共部分,具体的用法就不做过多介绍,不太了解可以参考webpack官网介绍: 该插件是we ...

  3. Anatomy of a Database System学习笔记 - 公共模块、结语

    公共模块 1. 使用基于上下文的内存分配器进行内存分配 除了教材里常提到的buffer pool,数据库还会为其他任务分配大量内存,例如,Selinger-style查询优化需要动态的规划查询:has ...

  4. Thinkphp5笔记六:公共模块common的使用

    common模块属于公共模块,Thinkphp框架,默认就能调用. 实际用处:任何模块都可能用到的模型.控制.事件提取出来放到公共模块下. 一.公共事件  apps\common\common.php ...

  5. Vue设置导航栏为公共模块并在登录页不显示

    1.公共模块的内容可以放在App.vue中但是通常登录页面是不需要导航的,那么就需要规避登录页这时,就可以采用keep-alive结合$route.meta来实现这个功能.keep-alive 是 V ...

  6. html引入公共模块

    如果没有母版页,那么大量相同布局的页面会有很多相同的代码,那么这就提到了一个概念,叫重用性:可以将相同布局的代码放在一个单独的文件,里面写一些公共模块,那么在其他页面只需要在指定位置引入他们就可以了写 ...

  7. Ionic4.x 中自定义公共模块

    1.创建公共模块以及组件 ionic g module module/slide ionic g component module/slide 2.公共模块 slide.module.ts 中暴露对应 ...

  8. Spring Cloud微服务(一):公共模块的搭建

    本demo后台采用spring cloud微服务,前端选用vue,进行前后端分离搭建.具体项目见git:光头才能强 创建文件夹,并分别创建以下jar工程 创建公共模块(后续有需要,还会增加).无论是d ...

  9. Python_selenium PO模式下 Tesecase 的相同执行代码做成selenium_base_case公共模块及调用

    作用: PO模式下 Tesecase 的相同执行代码做成selenium_base_case公共模块及调用,提高代码简洁度,实现同样效果. 框架结构: 代码简单实践: common模块下 seleni ...

随机推荐

  1. numpy入门—numpy是什么

    numpy是什么?为什么使用numpy 使用numpy库与原生python用于数组计算性能对比

  2. leetcode-剑指 Offer II 012. 左右两边子数组的和相等

    题目描述: 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和. 如果中心下标位于数组最左端,那么左侧数之和视为 ...

  3. java中如何能知道应该捕获什么样的异常?举例

    我怎么知道应该捕获什么样的异常? 马克-to-win:如上例1.1:开始没加try时,程序崩溃,系统打印的是如下的错误,Exception in thread "main" jav ...

  4. 【Android开发】URL 转义与反转义

    1,转义 @org.junit.Test public void testEncode(){ String url="http://192.168.0.19:8888/cas/login&q ...

  5. Python爬虫报错:"HTTP Error 403: Forbidden"

    错误原因:主要是由于该网站禁止爬虫导致的,可以在请求加上头信息,伪装成浏览器访问User-Agent. 新增user-agent信息: headers = {'User-Agent':'Mozilla ...

  6. js原生的Ajax

    js原生的Ajax其实就是围绕浏览器内内置的Ajax引擎对象进行学习的,要使用js原 生的Ajax完成异步操作,有如下几个步骤: 1)创建Ajax引擎对象 2)为Ajax引擎对象绑定监听(监听服务器已 ...

  7. struts token令牌机制

    利用Struts同步令牌(Token)机制来解决Web应用中的重复提交问题.该方法的基本原理是:服务器端在处理到达的request之前,会将request中的Token值与保存在当前用户session ...

  8. Mybatis更新和删除数据

    接上文->Mybatis快速入门<- 1.在UserMapper.xml配置更新和删除 <!-- 更新操作--> <update id="update" ...

  9. Java和JavaScript(函数)参数传递是按值传递还是按引用传递?

    结论:Java和JavaScript的所有(函数)参数传递都是按值传递! 1.什么是函数参数的传递是按引用传递? 什么是引用?这个概念多见于C++中,在C++中,引用解释为变量的别名. 1 #incl ...

  10. css 实现图片专场

    <template> <div> </div> </template> <style lang="scss"> html ...