GameFramework:打包资源,打随app发布包,打包生成文件夹说明,上传资源至服务器,下载资源,GameFreamworkList.dat 与GameFrameworkVersion.dat
Posted 四夕立羽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GameFramework:打包资源,打随app发布包,打包生成文件夹说明,上传资源至服务器,下载资源,GameFreamworkList.dat 与GameFrameworkVersion.dat相关的知识,希望对你有一定的参考价值。
打包配置
左边为ab包,中间为ab包中内容,右边为项目中资源文件
点击save,SaveConfiguration,保存打包关系到ResourceCollection.xml中
是否使用文件系统,只能在xml中手动配置,代表下载完后会把几个零散的ab文件合成一个文件
是否随APP发布打包
1、AssetBundle 列表
AssetBundle列表(AssetBundle List)列出了项目中包含的所有 AssetBundle,空 AssetBundle、场景 AssetBundle 和非场景 AssetBundle 分别用三种不同的图标标识。
功能按钮说明:
① 增加新的 AssetBundle,点击后需指定 AssetBundle 的名称(含目录名,使用“/”分隔)和变体名称(可空、根据需要使用)。
② 重命名选中的 AssetBundle。
③ 移除选中的 AssetBundle。
④ 更改 AssetBundle 的加载方式,可选择从文件加载、从内存加载,或者是从内存中解密后加载等。
⑤ 标记此 AssetBundle 是否需要随 App 一起发布,若勾选则打包时会做特殊处理。
packed作用应该是,打包app,可附带部分资源进入app。。随后热更是根据服务器文件列表与app安装后释放到的可读写路径下随包packed,再做差异更新
是否使用文件系统
只能在xml中手动配置,代表下载完后会把几个零散的ab文件合成一个文件
如何避免冗余
/// <summary>
/// 资源。
/// </summary>
public sealed class Resource
public List<Asset> m_Assets;
/// <summary>
/// 资源。
/// </summary>
public sealed class Asset : IComparable<Asset>
private Asset(string guid, Resource resource)
Guid = guid;
Resource = resource;
如果一个asset打入a.bundle,会从原来所在的b.bundle移除
bundle:TestNew中塞入asset->“Guid”:“4a17d2c656f5c6b44a31e3ee547a76b0”
Bundle:DataTables:取消asset->“Guid”:“4a17d2c656f5c6b44a31e3ee547a76b0”,
打AB包
- 可以选择项目中的压缩格式,默认的是GZip
- 每次打包资源版本号会自增1
- 打包输出路径不能为项目里Assets/StreamingAssets目录,应该在assets目录外打包
代码中调用ResourceBuilderController.BuildResources
打包出来文件夹说明
Working Path:Unity 生成 AssetBundle 时的工作目录。
Output Package Path:为单机模式生成的文件的所在目录,若游戏是单机游戏,生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后构建 App 即可。
Output FullPath:为可更新模式生成的完整文件包的所在目录,若游戏是网络游戏,生成结束后应将此目录上传至资源服务器,供玩家下载用。
Output Packed Path:为可更新模式生成的文件的所在目录,若游戏是网络游戏,生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后构建 App 即可。一个 AssetBundle 是否会生成到 Output Packed Path,取决与这个 AssetBundle 是否在 AssetBundle 编辑工具中被标记为 Packed。
Packed与Full文件夹
AB包和非AB包文件,在GF中被统一抽象为 Resource 文件,文件后缀为.dat ,在我们的资源列表中,记录的即是这些 .dat 资源文件的资源信息,信息中包含了这些资源文件的名称,hashcode,长度,zipHashcode,zip长度,是否AB包,加载设置,等等信息。
"生成目录/ Packed " (此目录下存储的是随APP一起发布的资源)
“生成目录/Full” (此目录下存储的是所有资源)
GameFreamworkList.dat 与GameFrameworkVersion.XXXX.dat
GameFreamworkList.dat (Packed中) 和 GameFrameworkVersion.XXXX.dat (Full 中) ,游戏中总的资源信息会记录在 GameFrameworkVersion.XXXX.dat 文件中,此文件是作为客户端资源总表而存在的,游戏的资源文件和资源信息的处理和操作都已此表为准。而 GameFreamworkList.dat 文件是作为客户端目录的当前资源记录表存在,只是记录了当前所在的目录下的资源文件信息。
需要把 Packed 文件夹下的所有文件,拷贝到工程中的 streamingAssets 目录下,再发布APP(ResourceEditor面板中标记Resource 为Pakeaged 后这个 Resource 就会打包到 Packed中)。只读目录下的 GameFreamworkList.dat 只记录了本目录下的所有资源文件的信息,这些信息再以后的资源校验中会被使用。资源总表 GameFrameworkVersion.XXXX.dat 在可更新模式下是可以不随安装包一起发布,因为这个文件后面会被下载到读写目录中。
应用每一次启动,首先需要你先得到当前资源总表的内部版本号(内部版本号在ResourceBuilder面板设置。至于内部版本号的动态获取过程,采用何种方式,则需要自己来实现),然后即可使用这个最新的内部版本号,调用
CheckVersionListResult ResourceComponent.CheckVersionList(int latestInternalResourceVersion)
来判定当前的资源总表是不是最新的,此时 CheckVersionList 方法会访问读写目录,并尝试读取 GameFrameworkVersion.XXXX.dat 文件,如果文件没有或者内部携带的资源内部版本号与你传递进来的不同,则会返回资源需要更新的枚举值,否则则会返回不需要更新。
上传AB包到服务器文件夹
复制文件过去
服务器中创建Version.txt文件
填充内容在打包报告中找
找到这行,把里面内容填充到Version.txt
Version.txt填充为
"ForceUpdateGame": false,
"LatestGameVersion": "0.1.0",
"InternalGameVersion": 0,
"InternalResourceVersion": 2,
"UpdatePrefixUri": "http://10.12.24.82:10089/Windows",
"VersionListLength": 7138,
"VersionListHashCode": -1969978894,
"VersionListCompressedLength": 2653,
"VersionListCompressedHashCode": 861209557
出现负数不影响使用,为crc32码转为int出现的负数
Unity使用真实ab与更新模式
远程地址修改
改为服务器地址,格式如下
“GameVersion”: “0.1.0”,
“InternalGameVersion”: 0,
“CheckVersionUrl”: “http://10.12.24.82:10089/0/Version.txt”,
“WindowsAppUrl”: “https://starforce.gameframework.cn”,
“MacOSAppUrl”: “https://starforce.gameframework.cn”,
“iosAppUrl”: “https://starforce.gameframework.cn”,
“androidAppUrl”: “https://starforce.gameframework.cn”,
“END_OF_JSON”: “”
运行下载
下载完的文件夹可以通过这个打开
以上是关于GameFramework:打包资源,打随app发布包,打包生成文件夹说明,上传资源至服务器,下载资源,GameFreamworkList.dat 与GameFrameworkVersion.dat的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D开发之手游热更,基于GameFramework(GF),涵盖Android|IOS|资源包|打包等功能非专业团队勿扰
Unity GameFramework✨(二十七)AB包打包问题集合
GameFramework:Resource加载,资源加载,依赖加载,任务池,对象池,引用计数
Unity GameFramework✨(三十二)教你做闪屏动画:App启动页