打包配置

在这里插入图片描述

左边为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包

在这里插入图片描述

  1. 可以选择项目中的压缩格式,默认的是GZip
  2. 每次打包资源版本号会自增1
  3. 打包输出路径不能为项目里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”: “”
}

运行下载

在这里插入图片描述

下载完的文件夹可以通过这个打开
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐