一、通过AssetManager实现分块
1. 基本操作
首先,设置分块:
方法一:打开Project Settings → Game → Asset Manager
需要设置的参数:
-
点击Primary Asset Types to Scan右边的加号,为数组添加新的元素
-
设置Primary Asset Type名称
-
选择Asset Base Class类型,如图选择了World类型
-
取消勾选Is Editor Only以将Chunk应用到非Editor平台
-
选择Directories来确定哪些目录下的资源将被浏览
-
如果要将引用资源也分到指定Chunk里,勾选Apply Recursively,反之则不勾
-
设置ChunkID,这将决定这类资源将被分到哪个资源块(-1和0都会被打入Chunk_0中)
7.如果希望只打包部分资源,减少无关资源的烘焙打包时间,可以设置Cook Rule为Never Cook
接下来,打开Window → Developer Tools → Asset Audit,在Add Primary Asset Type里可以看到我们设置好的Asset Base Type:
点击点Add Chunks可以看到这个时候只有默认的Chunk_0,这里需要先Cook
通过File → Cook Content for Windows烘焙之后,点击Refresh就可以看到我们刚设置好的Chunk_1,还可以在Selected Platform可以切换不同平台,查看对应平台的资源信息:
右键Chunk_1 → Size Map查看分配到Chunk_1中的所有资源信息:
需要注意的是,由于各个平台Cook出的资源大小不一,所以最好是烘焙对应平台的资源后(如何烘焙对应平台资源),在右上角选择对应平台的Chunk查看:
这种方式通过将Asset Base Class设置为Object的形式,可以实现将指定的某一文件夹下的所有资源打包到一个Chunk里(除Level外,Level需要额外配置)。
2. 自定义Asset Data分块
我们可以通过自定义PrimaryAssetData数据来控制分块内容,UE4默认为我们提供了一个PrimaryAssetLabel(我们也可以自己定义继承自PrimaryAssetData)的类做分块管理:
在Content Browser右键,选择Miscellaneous → Data Asset,输入PrimaryAssetLabel创建,双击进入Details面板:
设置参数:
-
设置ChunkID
-
和此Chunk包含的资源Explicit Assets
其他默认
Save → Cook后,得到Chunk_2:
这里举了一个利用PrimaryAssetLabel把CoventMap分到一个Chunk的例子,这种方式较为灵活,我们可以自己定义类型来规划Chunk内容,自定义规则,或者说是没有规则。需要注意的是,如果两个Chunk引用了同一资源且都勾选了Apply Recursively,这样会把资源分别打包到两个Chunk里。
二、手动设置每个资源的ChunkID
首先,勾选Allow ChunkID Assignments
选择要设置Chunk的资源,右键 → Asset Actions → Assign To Chunk,设置Chunk ID
Save → Cook后,得到Chunk_3:
这种方法只会把资源打到对应的Chunk里,不管其引用,甚至可以把资源同时丢到若干个Chunk里,可以说是最为灵活的方法了。
灵活是灵活了,但是如果管理整个项目的资源,反而变得复杂和不可控,所以引擎也默认不显示Assign Chunk ID的操作,不推荐这种方法。