Unity Game FrameWork—框架学习—游戏入口

E大的Demo框架,代码主要分为三部分。
Assets/UnityGameFramework/GameFramework:GF框架
Assets/UnityGameFramework/Scripts:UGF框架
Assets/GameMain/Scripts:Demo框架
在这里插入图片描述

Demo框架入口:GameEntry

Assets\GameMain\Scripts\Base\GameEntry.cs
初始化获取所有组件,获取前各个组件自身的awake方法已完成注册,注册的地方往下看unity框架入口。

unity框架入口:GameEntry

Assets\UnityGameFramework\Scripts\Runtime\Base\GameEntry.cs
相关属性及方法:
s_GameFrameworkComponents:
GameFrameworkLinkedList
游戏框架链表类,存储所有框架组件,注册组件时加入链表。
GameFrameworkSceneId:
游戏框架所在场景编号,设置值为0。场景组件会用到该属性,用来获取框架所在场景。
T GetComponent() :
获取游戏框架组件。
Shutdown(ShutdownType):
关闭游戏框架,切换语言,版本检测,资源更新,退出游戏时会调用。
关闭框架时传入类型枚举如下
public enum ShutdownType : byte
{
None = 0,//仅关闭游戏框架
Restart,//关闭游戏框架并重启游戏
Quit,// 关闭游戏框架并退出游戏
}
一般不会使用仅关闭游戏框架,只有在Debug调试的目录下有这个功能,会清除框架自带的所有组件,自定义的组件不会清除,框架的游戏入口仍然会保留。重启时会依据GameFrameworkSceneId加载游戏框架所在的场景。
RegisterComponent(GameFrameworkComponent):
注册框架组件,所有的框架组件在框架预制件中都有实体。游戏启动时,组件中的Aweak方法会首先调用该函数,将组件自身添加到游戏框架链表类中以完成组件注册。注册完成后,Demo框架入口GameEntry的Start会获取所有组件,方便后续调用框架组件的功能。

原生框架入口:GameFrameworkEntry

Assets\UnityGameFramework\GameFramework\Base\GameFrameworkEntry.cs
相关属性及方法:
s_GameFrameworkModules:
GameFrameworkLinkedList
游戏框架模块链表。
Update:
游戏框架模块轮询。
该方法由unity框架基础组件BaseComponent在update方法中调用,以完成每一帧调用模块。
Shutdown:
关闭并清理所有游戏模块框架,BaseComponent在OnDestroy方法中调用。
GetModule:
获取框架模块,没有时则会创建。
创建类的实例方法如下:
GameFrameworkModule module = (GameFrameworkModule)Activator.CreateInstance(moduleType);

总结

三个框架入口中,我们很容易发现Demo框架入口与unity框架入口的联系,关系很清晰。但是原生框架的入口与unity框架入口的联系很模糊,只有unity框架的基础组件BaseComponent与原生框架入口建立了联系,以完成轮询和删除框架模块。
通过查找GetModule方法的引用,我们可以发现unity框架的组件会获取原生框架的模块,大体上来说是一一对应的关系。
在这里插入图片描述
具体是怎样的对应关系,是依据什么来获取模块的,我们继续往下学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值