Unity 游戏框架搭建 2019 (五十) 消息机制小结

2024-05-06 12:58

本文主要是介绍Unity 游戏框架搭建 2019 (五十) 消息机制小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们花了 5 篇文章学习了消息机制的方方面面。并且完成了一个简易消息机制,之后集成到了我们的 MonoBehaviourSimplify 里。

现在 MonoBehaviourSimplify 有一点框架的感觉了。因为 MonoBehaviourSimplify 在提供消息功能的同时,决定了项目脚本中的交互方式。而目前的这套结构,足够用它来完成一个比较小的项目了。

消息机制是笔者在接触单例之后,第二次被震撼到的设计模式(观察者模式/发布者订阅者模式)。而笔者在初学的时候,还不太敢去设计 MonoBehaviourSimplify 这样的基类,因为当时总觉得自己对 MonoBehaviour 生命周期理解得不够透彻。但是,笔者在使用消息机制的时候遇到了很多问题,比如之前提到的,总是忘记注销消息,从而导致游戏闪退等各种奇怪的 bug,随着 bug 遇到得多了,就越来越意识到自动注销消息的重要性,而自动注销消息最好的方式就是通过继承基类的方式。所以就冒着风险被迫着就去写了这么一个类,这个类以前的名字叫做 QNode 也就是我们今天 MonoBehaviourSimplify 的前身,直到现在为止,QFramework 的核心还是通过 QNode 演变过来的类,现在叫做 QMonoBehaviour。

而在当时通过设计这么一个基类之后,笔者就对设计父类这种形式有了很大的信心,所以就只要能加到 MonoBehaviourSipmlify 的东西就全部加进去了,一直这样下去,理论上这样也不会发生问题,但是后来又找到了更好的方式,学习了更好的方式之后呢,就可以分辨出来哪个适合继承,哪个适合用方法独立实现,而哪个适合做成更复杂的系统。不过目前的这套结构,如果各位学到这里也没有太大的问题,已经可以拿去做项目了。

但是如果想做出更好的库和框架,那就最好认真看完这个专栏的文章。因为这是笔者三年框架思考的浓缩版。

而到目前为止,我们可以画出来一个框架的结构图了。
如下所示:
006tNc79gy1fzft76krotj30w20ey3zt.jpg

虽然东西不多,但是至少目前的我们的库可以叫做框架了。

到这里呢,我们还没有去讲框架、架构、库这些东西,现在正是讲这些概念的最好时机,所以从下一篇开始,我们会慢慢接触这些概念。

今天的内容就这些,我们下一篇再见,拜拜~ 。

转载请注明地址:凉鞋的笔记:liangxiegame.com

更多内容

  • QFramework 地址:https://github.com/liangxiegame/QFramework

  • QQ 交流群:623597263

  • Unity 进阶小班

    • 主要训练内容:
      • 框架搭建训练(第一年)
      • 跟着案例学 Shader(第一年)
      • 副业的孵化(第二年、第三年)
    • 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
  • 关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。

这篇关于Unity 游戏框架搭建 2019 (五十) 消息机制小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964419

相关文章

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对