GameFramework:StarForce资源讲解

资源处理是游戏中很重要的一模块。

提示:资源创建,资源初始化,资源加载,资源卸载,为整个流程。
关于资源怎么创建出来的,如何打ab资源,看这篇内容:GameFramework:AssetBunle 工具、配置、打包设置


文章目录


一、资源管理器

Editor Resource Mode 

 一看这个描述,还是不太清楚,到底是啥意思。

我们就查找所有引用,看看这个属性用到了那些地方,有啥作用。

1、如果勾选,就用EditorResourceHelper编辑器资源组件,反之ResourceManager资源管理器。

2、数据表组件,场景组件,声音组件等等,关于组件模块需要用到资源管理器的,都会设置资源管理器,对应使用。

 3、根据Editor Resource Mode 是否走,编译器模式流程。

GameEntry.Resource.ResourceMode 根据走单机,还是热更流程。

4、Editor Resource Mode  勾选启用自己并且编辑器资源组件赋值,反之不启用。

 EditorResourceComponent

编辑器资源组件,专门给在编译器下处理资源加载的,后面会单独介绍。

这个脚本并没有继承GameFrameworkModule类,猜想可能是EditorResourceMode勾选启用,更加方便吧。

二、资源初始化

编辑器模式下,并没有初始化资源这个流程。

1、在单机模式,会进入ProcedureInitResources,资源初始化就是从这个流程开始的。

GameEntry.Resource.InitResources(OnInitResourcesComplete);

接着往下看,咱们会看到这里,主要看ResourceManager,因为咱们走的并不是编辑器模式。

大家看到这个初始化。

 m_ResourceManager.m_ResourceHelper.LoadBytes

下面这个回调,才是重中之重。

OnLoadPackageVersionListSuccess

从StreamAssets读取GameFrameworkVersion.dat。

从GameFrameworkVersion.dat读取二进制文件流,利用回调函数解析资源信息,把资源分组加载到资源组里面。

下面我框起来的,这个大家注意看一下,后面加载资源就是从m_ResourceManager.m_AssetInfos  这里面拿出资源使用的,后面资源加载再详细的介绍。

2、热更的资源初始化。

ResourceManager.ResourceChecker 这个脚本里面。

 三、资源加载

加载资源这个操作,大家应该看到很多。

我们来看看怎么处理的,从ResourceManager.ResourceLoader脚本看看。

 从CheckAsset函数里面定位到GetAssetInfo 

 m_AssetInfos 这个大家看到过的,资源初始化这个字典就获取到了资源信息的数据。

四、资源卸载

走的资源池,释放的流程。可以看到各个模块的辅助器,都有调用,卸载资源的引用。

 我们来看个释放界面的例子。

m_ResourceComponent.UnloadAsset 卸载资源

Destroy 删除对象

先给对象回收,如果有释放就走释放的流程。

 释放之前会有,释放对象池中的可释放对象,流程筛选。

会从对象池释放对象。

总结

资源的初始化,资源加载,资源卸载,整个流程大家应该有了初步的了解,想要了解的更深入,还需要仔细的研究。

猜你喜欢

转载自blog.csdn.net/weixin_39081932/article/details/126674198