首页 > 其他分享 >Unity框架:JKFrame2.0学习笔记(十一)——MonoSystem(1)

Unity框架:JKFrame2.0学习笔记(十一)——MonoSystem(1)

时间:2023-04-25 10:32:26浏览次数:37  
标签:协程 Coroutine MonoSystem Update JKFrame2.0 对象 Unity 移除 监听

内部结构

MonoSystem

MonoSystem是继承MonoBehaviour的,声明几个action,在MonoBehaviour的声明周期内调用,实现了不继承MonoBehaviour也可以用mono的生命周期。

包括以下几个方法可供外部调用:

Init:初始化,获取MonoSystem的实例

AddUpdateListener:添加Update监听

RemoveUpdateListener: 移除Update监听

AddLateUpdateListener:添加LateUpdate监听

RemoveLateUpdateListener:移除LateUpdate监听

AddFixedUpdateListener:添加FixedUpdate监听

RemoveFixedUpdateListener:移除FixedUpdate监听

这几个方法又是如何做到在mono声明周期内调用的呢?

如下:

 private void Update()
        {
            updateEvent?.Invoke();
        }
        private void LateUpdate()
        {
            lateUpdateEvent?.Invoke();
        }
        private void FixedUpdate()
        {
            fixedUpdateEvent?.Invoke();
        }

协程

声明一个字典,把用的协程存放起来,进行统一管理,字典的结构是这样的Dictionary<object, List<Coroutine>>,对象作为key,对象对应的协程list作为value。

这其中也用到之前的对象池系统,主要是用在协程的停止和启动,用来回收协程

对携程相关的操作方法包括以下几个:

Start_Coroutine:启动一个协程

Start_Coroutine(重载):启动一个协程序并且绑定某个对象

Stop_Coroutine:停止一个协程序

Stop_Coroutine(重载):停止一个协程序并基于某个对象

StopAllCoroutine:整个系统全部协程都会停止

只有基于对象的操作,才会用到协程的字典和对象池,普通的协程启动和停止就是单纯的基于MonoSystem对象。

标签:协程,Coroutine,MonoSystem,Update,JKFrame2.0,对象,Unity,移除,监听
From: https://blog.51cto.com/u_16023649/6223557

相关文章

  • Unity通过PBXProject生成XCode工程
    Unity版本:2020.3.47f1首先通过PostProcessBuildAttribute监听XCode工程导出完成事件,GetUnityMainTargetGuid是获取XCode工程中"Unity-iPhone"对应的target,GetUnityFrameworkTargetGuid则对应"UnityFramework",在unity中大部分操作会是针对UnityFramework。PBXProject的很多操作都......
  • 在Unity 网络通讯
    usingSystem.Collections;usingUnityEngine;usingUnityEngine.Networking;publicclassHttpTest:MonoBehaviour{voidStart(){StartCoroutine(UnityWebRequestDemo());}IEnumeratorUnityWebRequestDemo(){using(Uni......
  • Unity___QFramework笔记
    引入Event引入事件监听。使用方法先定义一个事件类//定义数据变更事件publicstructCountChangeEvent//++{}//执行事件this.SendEvent<CountChangeEvent>();//++//注册事件this.RegisterEvent<CountChangeEvent>(e......
  • unity 打开电脑本地文件夹
    1.调用方法如下这是选择路径 2.代码如下usingSystem;usingSystem.IO;usingSystem.Runtime.InteropServices;usingUnityEngine;///<summary>///调用系统代码,打开本地文件夹///</summary>[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)]pub......
  • Unity框架:JKFrame2.0学习笔记(十)——自动生成资源引用代码(2)
    前言上一篇记录了自动生成资源引用代码的内部实现,主要是针对addressable的资源系统的,为了在加载时不会因为名字写错,加载错,也更加方便的使用addressable加载,这一篇记录下如何使用。如何使用之前看过,在编辑器中添加了工具按钮我们可以在addressable的groups面板上添加几个测试资源我......
  • 【Unity】旋转木马
    对三角函数进行实际操作,需要对木马移动进行平滑插值木马起伏采用的Cos函数的周期实现usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassMerryGoRound:MonoBehaviour{publicTransformnode;publicfloatrudis;......
  • unity实现简单AR识别
    首先前往unity官网:https://unity.cn/releases,下拉找到下载UnityHub绿色按钮下载完安装进入UnityHub中,在侧边栏找到Installs,点击打开下载如图所示的unity版本(注:unity同ue,只能高版本向低版本兼容)下载过程中记得取消勾选Documentation,选择简体中文(注:很多内容需要访问外网......
  • Unity Resources.Load
    图片路径必须是Assets\Resources目录下面的,并且不能带扩展名//E:\Assets\Resources\img\abc.jpgstringfilePath="img/abc";vartexture=Resources.Load<Texture2D>(filePath);GameObjectobj=newGameObject("newname",typeof(SpriteRenderer));Spr......
  • Unity- 数据与网络(占坑)
    一、常用数据格式1.轻量数据格式JSON1.1对象1.2数组1.3SON的创建和解析2.可扩展标记语言XML1.使用XML语法进行解析2.使用XPath语法进行解析CSV与ExcelSQLite1.创建表2.删除表3.增加数据4.查找数据5.删除数据6.修改数据二、多线程三、网络请求的使用网络请求搭......
  • 在MacOS下使用Unity3D开发游戏
    第一次发博客,先发一下我的游戏开发环境吧。去年2月份买了一台MacBookPro2021M1pro(以下简称mbp),这一年来一直在用mbp开发游戏。我大致分享一下我的开发工具以及使用体验。1、Unity官网链接:https://unity.cn/releases我一般使用的Applesilicon版本的,支持M1芯片,无需转译。Un......