导入YooAsset
{
"dependencies": {
"com.tuyoogame.yooasset": "0.0.1-preview",
......
},
"scopedRegistries": [
{
"name": "package.openupm.cn",
"url": "https://package.openupm.cn",
"scopes": [
"com.tuyoogame.yooasset"
]
}
]
}
- 也可以直接通过Git下载解压到项目目录
- 安装后结构目录如下
Assets
└─ YooAsset
├─ Editor 编辑器源码目录
├─ Runtime 运行时源码目录
├─ Samples Demo目录
├─ LICENSE 版权文档
└─ README 说明文档
全局配置
- 项目文件夹下,
右键->Create->YooAsset->Create YooAsset Settings
配置说明:
Manifest File Name
: 清单文件名称
Tips:
要将配置文件放在Resources
文件夹下
资源配置
右上角菜单按钮
- 修复,配置文件里的文件路径修改,找不到对应文件,点击修复可以根据guid自动矫正到新的路径
- 导入,导入xml资源配置文件
- 导出,导出xml资源配置文件
- 保存,修改配置后,点击保存后,才会正式保存到xml
顶部开关选项
ShowPackages
是否展示资源包列表视图ShowEditorAlias
是否显示为中文模式EnableAddressable
启用可寻址资源定位系统UniqueBundleName
资源包追加PackageName
作为前缀
资源分组,对应AssetBundleCollectorGroup
类
ActiveRule
激活规则。内置有EnableGroup
和DisableGroup
,需要自定义的话继承IActiveRole
并实现IsActiveGroup()
方法即可GroupName
分组名称GroupDesc
分组备注信息,便于查看GroupAssetTags
资源分类标签列表,该分组下收集的资源会全部被打上该标签。多个标签用分号;
隔开
收集器,对应AssetBundleCollector
类
CollectPath
收集路径,可以是文件夹或单个资源文件CollectorType
收集器类型
public enum ECollectorType
{
/// <summary>
/// 收集参与打包的主资源对象,并写入到资源清单的资源列表里(可以通过代码加载)。
/// </summary>
MainAssetCollector,
/// <summary>
/// 收集参与打包的主资源对象,但不写入到资源清单的资源列表里(无法通过代码加载)。
/// </summary>
StaticAssetCollector,
/// <summary>
/// 收集参与打包的依赖资源对象,但不写入到资源清单的资源列表里(无法通过代码加载)。
/// 注意:如果依赖资源对象没有被主资源对象引用,则不参与打包构建。
/// </summary>
DependAssetCollector,
/// <summary>
/// 该收集器类型不能被设置
/// </summary>
None,
}
StaticAssetCollector
收集器和DependAssetCollector
收集器适合对资源进行定制化打包策略。
示例1:一个游戏的粒子特效的纹理会非常多,通常特效制作师会把这些纹理放到一个文件夹内管理。如果我们把这些纹理打进一个AssetBundle
文件内,当下次更新的时候,如果新增或改动了一个纹理,那么就要上传整个纹理的AssetBundle
文件。我们可以把特效纹理通过DependAssetCollector
收集器进行收集并自定义打包规则,通过文件名称的首字母进行小粒度打包,这样一个AssetBundle
文件会被拆分为26个AssetBundle
文件。
示例2:当我们需要严格控制某个文件夹内的依赖资源打进同一个AssetBundle
文件内,那么StaticAssetCollector
收集器是最佳选择,该收集器收集的资源,无论是否被其它资源引用或被多个资源引用,这些资源都会按照设定的打包规则打包,且这些资源不会被处理为share
资源包。
AddressRuleName
可寻址规则,内置有以下几种,也可以扩展AddressByFileName
以文件名为定位地址AddressByFilePath
以文件路径为定位地址AddressByGrouperAndFileName
以分组名+文件名为定位地址AddressByGrouperAndFileName
以分组名+文件名为定位地址。
//自定义扩展范例
public class AddressByFileName : IAddressRule
{
string IAddressRule.GetAssetAddress(AddressRuleData data)
{
return Path.GetFileNameWithoutExtension(data.AssetPath);
}
}
PackRuleName
打包规则,内置有以下几种,也可以扩展PackSeparately
以文件路径作为资源包名,每个资源文件单独打包。PackDirectory
以文件所在的文件夹路径作为资源包名,该文件夹下所有文件打进一个资源包。PackTopDirectory
以收集器下顶级文件夹为资源包名,该文件夹下所有文件打进一个资源包。PackCollector
以收集器路径作为资源包名,收集的所有文件打进一个资源包。PackGroup
以分组名称作为资源包名,收集的所有文件打进一个资源包。PackRawFile
目录下的资源文件会被处理为原生资源包。
//自定义扩展范例
public class PackDirectory : IPackRule
{
PackRuleResult IPackRule.GetPackRuleResult(PackRuleData data)
{
//"Assets/Config/test.txt" --> "Assets/Config"
string bundleName = Path.GetDirectoryName(data.AssetPath);
PackRuleResult result = new PackRuleResult(bundleName, DefaultPackRule.AssetBundleFileExtension);
return result;
}
bool IPackRule.IsRawFilePackRule()
{
return false;
}
}
FilterRuleName
过滤规则,内置有以下几种,也可以扩展CollectAll
收集目录下的所有资源文件CollectScene
只收集目录下的场景文件CollectPrefab
只收集目录下的预制体文件CollectSprite
只收集目录下的精灵类型的文件CollectShaderVariants
只收集着色器变种集合,.shadervariants
文件
//自定义扩展范例
public class CollectScene : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
{
return Path.GetExtension(data.AssetPath) == ".unity";
}
}
UserData
用户自定义数据,可以帮助定制化AddressRule
和PackRule
。AssetTags
资源分类标签列表,该收集器下收集的资源会全部被打上该标签。
参考链接:
Comments | NOTHING
该文章已经关闭评论