Unity常用模块_公共Mono类
公共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类相关推荐
- 电气simulink常用模块_从整车控制器VCU模型入门simulink(1)
学习一门语言或者一门技术,最烦的就是长篇大论的理论和脱离实际的练习,我想正在阅读这篇文章的你一定深有体会,既然认识到了这样的痛点,我们接下来就换一种方式来学,通过实际工程中能运用到模型来逐步入门sim ...
- 电气simulink常用模块_【电气学习】电工入门的干货,都知道才算是合格的维修电工!...
1.三相交流异步电动机控制系统中常用的保护环节有哪些 短路保护,过载保护,零压和欠压保护,过 电流保护, 断相保护. 2.电气控制系统图分哪几类 电气控制系统图分为:电气原理图. 电气元件布置图和电气 ...
- python中常用模块_工作中用过的Python常用模块:(基于3.x)
内置模块: sys 用于提供对解释器相关的访问及维护.例如:sys.argv --传参 sys.platform --返回系统平台名称 sys.version --查看python版本 os 用于提供 ...
- 电气simulink常用模块_「西门子1200PLC教程」2.CPU家族及模块
本文转自电气工程师必备的公众号"电气工程师助手" SIMATIC S7-1200具有集成化PROFINET接口.强大的集成工艺功能和灵活的可扩展性特点,为各种工艺任务提供了简单的通 ...
- 电气simulink常用模块_建筑电气制图图形符号之二,火灾自动报警符号,赶快收藏吧...
续一 注:1 当电气元器件需要说明类型和敷设方式时,宜在符号旁标注下列字母:EX-防爆:EN-密闭:C-暗装. 2 当电击需要区分不同类型时,符号 可采用下列字母表示:G-发电机:GP-永磁发电机:G ...
- 电气simulink常用模块_干货丨16种常用模块电路分析,工程师的必备~
电路图一大张,看似复杂,但也都是由一小块一小块的功能模块组成的.因此要根据大的功能先划分成块,再在块里面看是通过什么电路形式实现的,有些起辅助作用,有些起主要作用.下面小编给大家整理了16种常用的模块 ...
- Unity常用模块设计 : Unity游戏排行榜的制作与优化
游戏排行榜是一个很重要的功能,在弱联网的单机游戏与网络游戏中排行榜都是非常重要的,今天我们来详细的讲解游戏排行榜的制作方案,主要有4个点: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交 ...
- 物联网常用模块_工业级SPI接口WiFi模块WG228助力工业物联网数据传输
工业物联网简单来说就是工业领域的物联网技术,物联网架构可分为三层:感知层.网络层和应用层,主要涵盖了数据的采集.传输及分析应用.物联网应用都有一个共同点:收集数据并将其发送到服务器或其他系统中,在数据 ...
- 电气simulink常用模块_基于Simulink的永磁电机(PMSM)控制仿真
基于Simulink的永磁电机(PMSM)控制仿真 引言 与传统的电励磁同步电机相比,永磁同步电机具有结构简单.运行可靠.体积小.质量轻.损耗小.尺寸形状灵活多样等特点. 控制 目前常用且简单的控制方 ...
最新文章
- angular-ui-router路由备忘
- boost中unordered_map的用法
- es6 Promise,生成器函数,async
- DictionaryTKey,TValue
- sorted是python的内置函数吗_Python中的内置sorted()函数
- 4.3 Siamese 网络
- ConfigParser.InterpolationSyntaxError: ‘%‘ must be followed by ‘%‘ or ‘(‘, found: “%‘“
- c语言编译asn1文件,使用 asn1.c 开源编译工具生成 S1AP R15消息编解码C文件
- layer checkbox
- 计算机网络——计算机网络知识脑图
- 用把位帮助记忆吉他音阶在指板上的分布
- 金山终端安全系统任意文件上传漏洞附poc(新鲜趁热)
- 新能源汽车控制技术分享:VCU整车控制器电控开发
- vue如何通过NodeJs本地获取微信access_token及签名,并调用微信接口
- 电气阀门定位器调试方法
- java ole excel_用OLE操作Excel
- RLC元件上电压,电流关系
- 怎样通俗易懂地解释内卷是什么意思?
- npm 淘宝镜像设置
- 东方博宜OJ 1231考试成绩的分布情况