TheInitialProject/Assets/CaoCao/.~XAsset说明/打Bundles.txt

69 lines
6.1 KiB
Plaintext
Raw Normal View History

2024-10-23 16:59:02 +08:00
概念:
SettingsXAsset全局配置
Build打bundle需读取的配置XAsset只会打包Build配置中有的资源
BuildGroup负责管理需要打包的资源相当于文件夹每个BuildGroup会按名字生成对应的文件夹。
AssetPack配置是否加入安装包的依据配置。
【画重点】如果要将资源打入安装包,需注意:
0创建AssetPack将所需资源加入进去并且交付模式选择InstallTime或FastFollow。AssetPack只是判断资源是否进入安装包的依据并不负责具体生成bundle包。
1所有需要生成的bundle包必须加入BuildGroup并将其加入Build配置。一个Build可添加多个BuildGroup。
2所有在AssetPack中配置的资源必须加入到BuildGroup中并配置进Build才能够生效。
3分包文件BuildGroup中AddressMode不能设置为LoadByName和LoadByNameWithoutExtension最好设置为LoadByPath
--Build Bundles打bundle包-- 调用【Assets\CaoCao\Scripts\Editor\XAsset\Build\Builder.cs】
0获取Settings配置
1获取到所有Build配置
2打包所有配置
0调用CollectAssets类收集配置中的资源文件以及相关依赖 设置到BuildJob的bundledAssets需打包rawAssets按原始资源
1调用ClearDuplicateAssets类清理清理重复设置打包分组的资源
2如果Build配置中勾选OptimizeDependentAssets 则调用OptimizeDependentAssets类优化资源文件
3调用SaveBuildAssets类生成json文件到目录【“{项目根路径}/BundlesCache/{平台}/{Build配置名}.json”】
文件中记录配置中的所有资源文件以及依赖文件
4调用BuildBundles类根据收集到的资源分别对BuildJob的bundledAssets和rawAssets进行打包
-1-对bundledAssets中的资源分别打成单独的bundle文件如果勾选加密则在文件头加入32位hash值
将bundle文件打包到【" {项目根路径}/BundlesCache/{平台}" 】目录下
加密后,复制到【“ {项目根路径}/Bundles/{平台}”】下 改名为 【“ {源文件名}_{路径hash}.bundle”】
-2-对rawAssets中的资源直接复制【” {项目根路径}/Bundles/{平台}“】 路径下, 改名为 【“ {源文件名}_{路径hash}”】
-3-写入文件的hash
5调用BuildVersions类记录每个build配置中资源的依赖关系保存在【“ {项目根路径}/Bundles/{平台}/{Build配置名_hash}.json”】
将所有Build配置记录在version.data中保存在【" {项目根路径}/BundlesCache/{平台}/version.json" 】
如果Settings中勾选了BuildAssetPackAssets会设置这个{Build配置名}.json的packed=true
当packed为true时获取下载文件的时候会对随包资源进行验证并且无论如何都会下载随包资源
3将判断为要进入安装包的AssetPack配置记录在version.preloadPacks中重写【" {项目根路径}/BundlesCache/{平台}/version.json" 】
4将version按版本号重命名后写入【" {项目根路径}/Bundles/{平台}/version_v{每个Build配置的版本号}.json" 】
5以上一步文件的hash存入【" {项目根路径}/BundlesCache/{平台}/updateinfo.json" 】的hash中
--Build Bundles With Last Build打bundle包-- 调用【Assets\CaoCao\Scripts\Editor\XAsset\Build\Builder.cs】
0获取Settings配置
1获取到所有Build配置
2打包所有配置
0调用LoadBuildAssets读取 【“{项目根路径}/BundlesCache/{平台}/{Build配置名}.json”】
收集job.rawAssets和job.bundledAssets
1调用BuildBundles类根据收集到的资源分别对BuildJob的bundledAssets和rawAssets进行打包
-0-,全部重新生成
-1-对bundledAssets中的资源分别打成单独的bundle文件如果勾选加密则在文件头加入32位hash值
将bundle文件打包到【" {项目根路径}/BundlesCache/{平台}" 】目录下
加密后,移动到【“ {项目根路径}/Bundles/{平台}”】下 改名为 【“ {源文件名}_{路径hash}.bundle”】
-2-对rawAssets中的资源直接复制【” {项目根路径}/Bundles/{平台}“】 路径下, 改名为 【“ {源文件名}_{路径hash}”】
-3-写入文件的hash
2调用BuildVersions类记录每个build配置中资源的依赖关系保存在【“ {项目根路径}/Bundles/{平台}/{Build配置名_hash}.json”】
将所有Build配置记录在version.data中保存在【" {项目根路径}/BundlesCache/{平台}/version.json" 】
如果Settings中勾选了BuildAssetPackAssets会设置这个{Build配置名}.json的packed=true
当packed为true时获取下载文件的时候会对随包资源进行验证并且无论如何都会下载随包资源
3将判断为要进入安装包的AssetPack配置记录在version.preloadPacks中重写【" {项目根路径}/BundlesCache/{平台}/version.json" 】
4将version按版本号重命名后写入【" {项目根路径}/Bundles/{平台}/version_v{每个Build配置的版本号}.json" 】
5以上一步文件的hash存入【" {项目根路径}/BundlesCache/{平台}/updateinfo.json" 】的hash中
【这里有个bug有时候会漏打资源】
--Build PlayerAssets将版本资源打入streamingAssetsPath文件夹-- -- 调用【Assets\CaoCao\Scripts\Editor\XAsset\Build\Setp\BuildPlayerAsset.cs】
0从BuildCache中读取versions.json文件
----------------1把未勾选subPackage的【{Build配置名_hash}.json】文件从 【“ {项目根路径}/Bundles/{平台}”】复制到streamingAssetsPath文件夹---------------------
1根据versions.json获取到设置为交付模式为Install Time的bundle包 从“{项目根路径}/Bundle“复制文件到streamingAssetsPath
0只有Settings中PlayerAssetsSplitMode设置为SplitByAssetPacksWithInstallTime或IncludeAllAssets才算
1只有在versions.data中的bundle才算
2如果Settings中勾选了packPlayerAssets会把所有的资源写到一个二进制文件中按文件偏移读取资源
2将playerassets.json文件写入streamingAssetsPath文件夹
3将version.json文件写入streamingAssetsPath文件夹