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

本文约7.6千字,新手阅读需要18分钟,复习需要9分钟收藏随时查阅不再迷路

👉关于作者


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

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

有什么需要欢迎私我,交流群让学习不再孤单

在这里插入图片描述

👉前提


学习框架查看官方的文档或案例是很快的学习方式。

咱们刚刚学习了Game Framework框架,没有个案例怎么能行呢;虽然官方就有个完成的案例,但是吧,作者大佬经常“鸽”,没有什么官方教程。

不过没关系我们就来一起看看

👉实践过程


😜下载项目

在本地创建个文件夹,利用git下载项目(推荐)

git clone https://gitee.com/jiangyin/StarForce.git

使用Unity打开工程,我的是Unity2019.4.9f1版本,打开可能有点慢,不急,等一等。

image.png

进去后运行StarForce Launcher,即可开始游戏。(可能出现不同Unity版本打开的时候脚本里面的API或者什么有报错,自己对应修改下就行了)

image.png

😜寻找入口

任何一款游戏入口是第一印象,程序入口是开发的切入口。案例的入口找起来也很快,有个StarForce Launcher的场景,点进去发现只有个Game Framework的物体,挂载着【GameEntry】脚本,拿这个脚本必定是入口了,点进去看看。

image.png

发现里面只有两个函数方法;这么简单?点进去看看;

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()-光看名字就知道初始化内置组件,另一个就是初始化自定义的组件了。

等等,好像哪里不对!怎么感觉是不同的文件?

image.png

GameEntry竟然有三个类,我哩个去,挺6的啊。仔细看,原来是partial class作祟。

partial class是部分类关键字,什么是部分类?就是将一个类的代码根据不同的内容逻辑划分开,然后写在不同的文件中,这样有利于多位开发人员同时对该类处理,既增强可读性又实用。而且命名的时候最好也规范化,比如主部分类文件名为AClass,次部分类就为AClass.PartName。

image.png

Partial 关键字还有几点注意

  • 1.所有部分类都要使用partial关键字

  • 2.各个部分访问权限要一致,是public就都是public,是其他的就都是其他的

  • 3.其中任意一个声明抽象类型,整个类型都会是抽象的

  • 4.她们内部的任何类,结构等是可以相互使用的

😜真假入口?

之前的文章中找到个初步入口代码发现就走不动了,这不对啊,按道理讲找到入口就应该层层递进分析透彻,唰唰唰咔咔咔的打通奇经八脉。卡在这可不甘心啊。我又在官方看介绍,发现官方有个流程一说,她就像人的大脑心脏一样,有条不絮的管理整个身体。

官方案例中确实也有个流程(procedure)的物体,那我们就一探究竟,看看到底是不是真正的入口。

image.png

最后是今天给大家分享的一些独家干货:

【Android开发核心知识点笔记】

【Android思维脑图(技能树)】

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【Android高级架构视频学习资源】

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值