| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity技术-GameFramework-官方案例解析 -> 正文阅读 |
|
[游戏开发]Unity技术-GameFramework-官方案例解析 |
👉关于作者
👉前提学习框架查看官方的文档或案例是很快的学习方式。 咱们刚刚学习了Game Framework框架,没有个案例怎么能行呢;虽然官方就有个完成的案例,但是吧,作者大佬经常“鸽”,没有什么官方教程。 不过没关系我们就来一起看看 👉实践过程😜下载项目在本地创建个文件夹,利用git下载项目(推荐)
git clone https://gitee.com/jiangyin/StarForce.git 😜寻找入口任何一款游戏入口是第一印象,程序入口是开发的切入口。案例的入口找起来也很快,有个StarForce Launcher的场景,点进去发现只有个Game Framework的物体,挂载着【GameEntry】脚本,拿这个脚本必定是入口了,点进去看看。
InitBuiltinComponents()-光看名字就知道初始化内置组件,另一个就是初始化自定义的组件了。 等等,好像哪里不对!怎么感觉是不同的文件? partial class是部分类关键字,什么是部分类?就是将一个类的代码根据不同的内容逻辑划分开,然后写在不同的文件中,这样有利于多位开发人员同时对该类处理,既增强可读性又实用。而且命名的时候最好也规范化,比如主部分类文件名为AClass,次部分类就为AClass.PartName。 Partial 关键字还有几点注意
😜真假入口?之前的文章中找到个初步入口代码发现就走不动了,这不对啊,按道理讲找到入口就应该层层递进分析透彻,唰唰唰咔咔咔的打通奇经八脉。卡在这可不甘心啊。我又在官方看介绍,发现官方有个流程一说,她就像人的大脑心脏一样,有条不絮的管理整个身体。 官方案例中确实也有个流程(procedure)的物体,那我们就一探究竟,看看到底是不是真正的入口。 我们先随便找到个流程文件看看,发现她是继承自【ProcedureBase】类的,我们再反过来去看看框架作者说的话(仔细去品味一下): 流程是贯穿游戏运行时整个生命周期的有限状态机。通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。 对于一款网络游戏来说,你可能需要如下几个流程:检查资源流程、更新资源流程、检查服务器列表流程、选择服务器流程、登录服务器流程、创建角色流程等流程,而对于单机游戏,你可能需要在游戏选择菜单流程和游戏实际玩法流程之间做切换。 所以,如果想增加流程,只要派生自【ProcedureBase】类并实现自己的流程类即可使用。 从最后一句话我们可以看出,每个流程只要继承【ProcedureBase】框架就会自动读取,然后在上图中显示出来。还有【Entrance Procedure】翻译过来就是入口,应该是从各个流程中选择一个启动流程入口。 有兴趣的也可以测试下自定义类继承【ProcedureBase】,看是否会在这出现。 事实是会的。 😜流程分析既然从入口处知道了流程贯穿整个过程,那我们倒要看看这个流程到底有什么能耐。
【OnInit】方法,凡是Init初始化方法,在编程里不成文的规定-都是最先执行的。事实此框架也是这么干的。 【OnEnter】方法,这里面有个GameMode-游戏模式,和LOL的匹配,大乱斗,无限火力一样的思想,模式不同,里面的玩法内容不同。里面是【m_CurrentGame.Initialize();】初始化的,而【CurrentGame】是【GameBase】类型,我们就看看【GameBase】她是怎么初始化的。进去发现她不是框架的一部分,那必然是根据各自的开发项目不同自己定义。 初始化方法【Initialize】里面出了注册Event事件外,就是创建玩家【ShowMyAircraft】,我们层层剖析发现【ShowMyAircraft】最终是调用【ShowEntity】,这个里面又有两大方法:读取配置文件和加载实体配置【暂不剖析】。 接着我们在回去看看【OnInit】里面初始化了个【SurvivalGame】,而这个是继承自【GameBase】, 【GameBase】是基础游戏类,那继承自她的【SurvivalGame】就应该是实际游戏的实现了。 看看【SurvivalGame】里的方法-只有个【Update】,且里面是每秒创建一个怪物,随机坐标,然后加载出来。
😜真实的逻辑处理前面说了部分还是理解的模模糊糊,可以看木头前辈的文章,在这咱说清楚真正的逻辑处理在哪 👉其他
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 18:29:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |