公共Mono类

在Unity中,如果游戏运行时,游戏脚本中存在多个Update,这会造成一定的性能损耗,所以我们可以用一个公共Mono类来统一使用一个update。

当然公共Mono的另一个作用就是在一个类不继承Mono的前提下使用unity提供的脚本生命周期和协程。

公共Mono类在之后的一些模块中会经常用到,这里就先介绍公共Mono的代码书写。

公共Mono类

从本类可以看出,公共Mono的本质就是利用事件来使那些没有继承Mono的类使用unity的东西,当然只有这一个类的化,那这个类就没有那么神奇了。我们还需要一个单例管理类来保证全局只使用这一个Update等unity的方法

using UnityEngine;
using UnityEngine.Events;/*
Editor:
Version:
The last time for modification:
Time for Creation:
*/
namespace CsharpBaseModule.PublicMono
{/// <summary>/// 公共Mono类,可以让所有脚本共用一个脚本生命周期/// </summary>public class PublicMono : MonoBehaviour{public event UnityAction UpdateEvent;private void Update(){if (UpdateEvent != null){UpdateEvent();}}public void AddUpdateListener(UnityAction listener){UpdateEvent += listener;}public void RemoveUpdateListener(UnityAction listener){UpdateEvent -= listener;}}
}

MonoManager

using CsharpBaseModule.Singleton;
using UnityEngine;
using UnityEngine.Events;namespace CsharpBaseModule.PublicMono
{//未继承Mono的类,通过MonoManager单例直接使用unity的方法。public class MonoManager : BaseSingleton<MonoManager>{//我们通过封装一个公共Mono类的对象来实现公共Mono类的作用。此对象用于在管理类的中的方法中调用unity方法。private PublicMono _mono;//这里的构造函数将由基础单例类中生成单例时调用。public MonoManager(){GameObject gameObject = new GameObject(typeof(MonoManager).ToString());gameObject.AddComponent<PublicMono>();}//添加回调函数,此函数将直接在PublicMono类中的Update中执行。public void AddUpdateListener(UnityAction listener){_mono.AddUpdateListener(listener);}public void RemoveUpdateListener(UnityAction listener){_mono.RemoveUpdateListener(listener);}//此外我们还可以添加协程方法,原理都一样,方法体内直接通过_mono对象调用PublicMono的协程。}
}

BaseSingleton<>

这里将基础单例类的代码也粘出来

using System.Collections;
using System.Collections.Generic;
using UnityEngine;/*
Editor:
Version:
The last time for modification:
Time for Creation:
*/
namespace CsharpBaseModule.Singleton
{/// <summary>/// 基础单例类,线程不安全/// </summary>public class BaseSingleton<T> where T : new(){private static T _instance;public static T GetInstance{get{if (_instance == null){_instance = new T();}return _instance;}}}
}

Unity常用模块_公共Mono类相关推荐

  1. 电气simulink常用模块_从整车控制器VCU模型入门simulink(1)

    学习一门语言或者一门技术,最烦的就是长篇大论的理论和脱离实际的练习,我想正在阅读这篇文章的你一定深有体会,既然认识到了这样的痛点,我们接下来就换一种方式来学,通过实际工程中能运用到模型来逐步入门sim ...

  2. 电气simulink常用模块_【电气学习】电工入门的干货,都知道才算是合格的维修电工!...

    1.三相交流异步电动机控制系统中常用的保护环节有哪些 短路保护,过载保护,零压和欠压保护,过 电流保护, 断相保护. 2.电气控制系统图分哪几类 电气控制系统图分为:电气原理图. 电气元件布置图和电气 ...

  3. python中常用模块_工作中用过的Python常用模块:(基于3.x)

    内置模块: sys 用于提供对解释器相关的访问及维护.例如:sys.argv --传参 sys.platform --返回系统平台名称 sys.version --查看python版本 os 用于提供 ...

  4. 电气simulink常用模块_「西门子1200PLC教程」2.CPU家族及模块

    本文转自电气工程师必备的公众号"电气工程师助手" SIMATIC S7-1200具有集成化PROFINET接口.强大的集成工艺功能和灵活的可扩展性特点,为各种工艺任务提供了简单的通 ...

  5. 电气simulink常用模块_建筑电气制图图形符号之二,火灾自动报警符号,赶快收藏吧...

    续一 注:1 当电气元器件需要说明类型和敷设方式时,宜在符号旁标注下列字母:EX-防爆:EN-密闭:C-暗装. 2 当电击需要区分不同类型时,符号 可采用下列字母表示:G-发电机:GP-永磁发电机:G ...

  6. 电气simulink常用模块_干货丨16种常用模块电路分析,工程师的必备~

    电路图一大张,看似复杂,但也都是由一小块一小块的功能模块组成的.因此要根据大的功能先划分成块,再在块里面看是通过什么电路形式实现的,有些起辅助作用,有些起主要作用.下面小编给大家整理了16种常用的模块 ...

  7. Unity常用模块设计 : Unity游戏排行榜的制作与优化

    游戏排行榜是一个很重要的功能,在弱联网的单机游戏与网络游戏中排行榜都是非常重要的,今天我们来详细的讲解游戏排行榜的制作方案,主要有4个点: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交 ...

  8. 物联网常用模块_工业级SPI接口WiFi模块WG228助力工业物联网数据传输

    工业物联网简单来说就是工业领域的物联网技术,物联网架构可分为三层:感知层.网络层和应用层,主要涵盖了数据的采集.传输及分析应用.物联网应用都有一个共同点:收集数据并将其发送到服务器或其他系统中,在数据 ...

  9. 电气simulink常用模块_基于Simulink的永磁电机(PMSM)控制仿真

    基于Simulink的永磁电机(PMSM)控制仿真 引言 与传统的电励磁同步电机相比,永磁同步电机具有结构简单.运行可靠.体积小.质量轻.损耗小.尺寸形状灵活多样等特点. 控制 目前常用且简单的控制方 ...

最新文章

  1. angular-ui-router路由备忘
  2. boost中unordered_map的用法
  3. es6 Promise,生成器函数,async
  4. DictionaryTKey,TValue
  5. sorted是python的内置函数吗_Python中的内置sorted()函数
  6. 4.3 Siamese 网络
  7. ConfigParser.InterpolationSyntaxError: ‘%‘ must be followed by ‘%‘ or ‘(‘, found: “%‘“
  8. c语言编译asn1文件,使用 asn1.c 开源编译工具生成 S1AP R15消息编解码C文件
  9. layer checkbox
  10. 计算机网络——计算机网络知识脑图
  11. 用把位帮助记忆吉他音阶在指板上的分布
  12. 金山终端安全系统任意文件上传漏洞附poc(新鲜趁热)
  13. 新能源汽车控制技术分享:VCU整车控制器电控开发
  14. vue如何通过NodeJs本地获取微信access_token及签名,并调用微信接口
  15. 电气阀门定位器调试方法
  16. java ole excel_用OLE操作Excel
  17. RLC元件上电压,电流关系
  18. 怎样通俗易懂地解释内卷是什么意思?
  19. npm 淘宝镜像设置
  20. 东方博宜OJ 1231考试成绩的分布情况

热门文章

  1. vue移动端van-uploader上传图片压缩工具类
  2. jquery datatable sDom(自定义布局)
  3. 陈凯歌: 大创意大《无极》
  4. Hudson插件开发入门体验
  5. Pulsar Summit Asia 2022 议题征集令,倒计时十天提交演讲议题
  6. C#,河豚算法(Blowfish Algorithm)的加密、解密源代码
  7. 黑马程序员_MongoDB笔记
  8. 如何从零基础学习计算机编程
  9. 【子网划分】求子网网络前缀、子网地址、每个子网可以分配给主机使用的最小地址和最大地址
  10. 微信小程序C语言通讯录,微信小程序のwxml列表渲染