有无之境

YooAsset-基础配置(一)

导入YooAsset

{
  "dependencies": {
    "com.tuyoogame.yooasset": "0.0.1-preview",
    ......
  },
  "scopedRegistries": [
    {
      "name": "package.openupm.cn",
      "url": "https://package.openupm.cn",
      "scopes": [
        "com.tuyoogame.yooasset"
      ]
    }
  ]
}
Assets
└─ YooAsset
    ├─ Editor 编辑器源码目录  
    ├─ Runtime 运行时源码目录 
    ├─ Samples Demo目录
    ├─ LICENSE 版权文档
    └─ README 说明文档 

全局配置

配置说明:

Tips:
要将配置文件放在Resources文件夹下

资源配置

右上角菜单按钮

顶部开关选项

资源分组,对应AssetBundleCollectorGroup

收集器,对应AssetBundleCollector

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资源包。

//自定义扩展范例
public class AddressByFileName : IAddressRule
{
    string IAddressRule.GetAssetAddress(AddressRuleData data)
    {
        return Path.GetFileNameWithoutExtension(data.AssetPath);
    }
}
//自定义扩展范例
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;
    }
}
//自定义扩展范例
public class CollectScene : IFilterRule
{
    public bool IsCollectAsset(FilterRuleData data)
    {
        return Path.GetExtension(data.AssetPath) == ".unity";
    }
}

参考链接:

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »