往期文章分享
本文约7.6千字,新手阅读需要18分钟,复习需要9分钟 【收藏随时查阅不再迷路】
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单。
学习框架查看官方的文档或案例是很快的学习方式。
咱们刚刚学习了Game Framework框架,没有个案例怎么能行呢;虽然官方就有个完成的案例,但是吧,作者大佬经常“鸽”,没有什么官方教程。
不过没关系我们就来一起看看
😜下载项目
在本地创建个文件夹,利用git下载项目(推荐)
-
1.git init
-
2.git clone https://github.com/EllanJiang/StarForce.git
-
3.如果上面github下载慢,可以去gitee下载
git clone https://gitee.com/jiangyin/StarForce.git
使用Unity打开工程,我的是Unity2019.4.9f1版本,打开可能有点慢,不急,等一等。
进去后运行StarForce Launcher,即可开始游戏。(可能出现不同Unity版本打开的时候脚本里面的API或者什么有报错,自己对应修改下就行了)
😜寻找入口
任何一款游戏入口是第一印象,程序入口是开发的切入口。案例的入口找起来也很快,有个StarForce Launcher的场景,点进去发现只有个Game Framework的物体,挂载着【GameEntry】脚本,拿这个脚本必定是入口了,点进去看看。
发现里面只有两个函数方法;这么简单?点进去看看;
private static void InitBuiltinComponents()
{
Base = UnityGameFramework.Runtime.GameEntry.GetComponent();
Config = UnityGameFramework.Runtime.GameEntry.GetComponent();
DataNode = UnityGameFramework.Runtime.GameEntry.GetComponent();
DataTable = UnityGameFramework.Runtime.GameEntry.GetComponent();
Debugger = UnityGameFramework.Runtime.GameEntry.GetComponent();
Download = UnityGameFramework.Runtime.GameEntry.GetComponent();
Entity = UnityGameFramework.Runtime.GameEntry.GetComponent();
Event = UnityGameFramework.Runtime.GameEntry.GetComponent();
FileSystem = UnityGameFramework.Runtime.GameEntry.GetComponent();
Fsm = UnityGameFramework.Runtime.GameEntry.GetComponent();
Localization = UnityGameFramework.Runtime.GameEntry.GetComponent();
Network = UnityGameFramework.Runtime.GameEntry.GetComponent();
ObjectPool = UnityGameFramework.Runtime.GameEntry.GetComponent();
Procedure = UnityGameFramework.Runtime.GameEntry.GetComponent();
Resource = UnityGameFramework.Runtime.GameEntry.GetComponent();
Scene = UnityGameFramework.Runtime.GameEntry.GetComponent();
Setting = UnityGameFramework.Runtime.GameEntry.GetComponent();
Sound = UnityGameFramework.Runtime.GameEntry.GetComponent();
UI = UnityGameFramework.Runtime.GameEntry.GetComponent();
WebRequest = UnityGameFramework.Runtime.GameEntry.GetComponent();
}
InitBuiltinComponents()-光看名字就知道初始化内置组件,另一个就是初始化自定义的组件了。
等等,好像哪里不对!怎么感觉是不同的文件?
GameEntry竟然有三个类,我哩个去,挺6的啊。仔细看,原来是partial class作祟。
partial class是部分类关键字,什么是部分类?就是将一个类的代码根据不同的内容逻辑划分开,然后写在不同的文件中,这样有利于多位开发人员同时对该类处理,既增强可读性又实用。而且命名的时候最好也规范化,比如主部分类文件名为AClass,次部分类就为AClass.PartName。
Partial 关键字还有几点注意
-
1.所有部分类都要使用partial关键字
-
2.各个部分访问权限要一致,是public就都是public,是其他的就都是其他的
-
3.其中任意一个声明抽象类型,整个类型都会是抽象的
-
4.她们内部的任何类,结构等是可以相互使用的
😜真假入口?
之前的文章中找到个初步入口代码发现就走不动了,这不对啊,按道理讲找到入口就应该层层递进分析透彻,唰唰唰咔咔咔的打通奇经八脉。卡在这可不甘心啊。我又在官方看介绍,发现官方有个流程一说,她就像人的大脑心脏一样,有条不絮的管理整个身体。
官方案例中确实也有个流程(procedure)的物体,那我们就一探究竟,看看到底是不是真正的入口。
这个流程组件,从直观上来看只是提供了勾选功能,没有其他功能,那这“玄乎”的内容里面到底做了什么呢?
我们先随便找到个流程文件看看,发现她是继承自【ProcedureBase】类的,我们再反过来去看看框架作者说的话(仔细去品味一下):
流程是贯穿游戏运行时整个生命周期的有限状态机。通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。
最后
分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!
-
阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升
-
**全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记
有任何问题,欢迎广大网友一起来交流
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
图片转存中…(img-lvLFg2rr-1715691459770)]
- **全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记
[外链图片转存中…(img-d5QhNNL9-1715691459773)]
有任何问题,欢迎广大网友一起来交流
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!