Unity技术-GameFramework-官方案例解析-下

4,114 阅读3分钟

「这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

欢迎关注公众号【空名先生】获取更多资源和交流!

👉前提

学习框架查看官方的文档或案例是很快的学习方式。 请先看之前的内容。

👉实践过程

😜流程分析

既然从入口处知道了流程贯穿整个过程,那我们倒要看看这个流程到底有什么能耐。

image.png

从上图代码和注释看出,流程也是有生命周期函数的,至于对应的里面都做什么我们马上打开看看,但我们要先理清两点

  • 1.框架是用流程来管理所有事情,不同流程负责不同工作,就像生产线一样
  • 2.流程的切换是用有限状态机来实现的

【OnInit】方法,凡是Init初始化方法,在编程里不成文的规定-都是最先执行的。事实此框架也是这么干的。

【OnEnter】方法,这里面有个GameMode-游戏模式,和LOL的匹配,大乱斗,无限火力一样的思想,模式不同,里面的玩法内容不同。里面是【m_CurrentGame.Initialize();】初始化的,而【CurrentGame】是【GameBase】类型,我们就看看【GameBase】她是怎么初始化的。进去发现她不是框架的一部分,那必然是根据各自的开发项目不同自己定义。

初始化方法【Initialize】里面出了注册Event事件外,就是创建玩家【ShowMyAircraft】,我们层层剖析发现【ShowMyAircraft】最终是调用【ShowEntity】,这个里面又有两大方法:读取配置文件和加载实体配置【暂不剖析】。

接着我们在回去看看【OnInit】里面初始化了个【SurvivalGame】,而这个是继承自【GameBase】,

【GameBase】是基础游戏类,那继承自她的【SurvivalGame】就应该是实际游戏的实现了。

看看【SurvivalGame】里的方法-只有个【Update】,且里面是每秒创建一个怪物,随机坐标,然后加载出来。

image.png

那么我们整体回顾下流程

  1. OnInit初始化游戏模式,而游戏模式类里面有具体的业务代码
  2. OnEnter初始化游戏相关,并且利用从配置文件读取数据,根据数据来加载实体创建玩家,还有启用OnInit里面初始化的代码。
  3. OnUpdate切换不同的流程
  4. onLeave,离开当前流程的时候释放资源,比如取消订阅事件,关闭菜单UI

😜真实的逻辑处理

前面说了部分还是理解的模模糊糊,可以看木头前辈的文章,在这咱说清楚真正的逻辑处理在哪

image.png 我们进去可以看到有【OnInit】【OnShow】【OnUpdate】三个方法,【OnUpdate】中就包含 了事件逻辑处理等

image.png 到这基本思路就渐渐清晰了,至于更深入的学习,后面需要的时候再挖坑吧。

👉其他

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)

📢欢迎点赞👍收藏🌟留言📝