Skip to main content
Version: 2022.1

自定义加载地址

xasset 默认使用资产在 Assets 目录的相对路径加载资产,但也可以通过使用自定义加载器为特定的资产生成别名并加载。

示例代码

如何使用自定义加载器?可以参考以下代码的实现方式:

public enum LoadMode
{
LoadByName,
LoadByNameWithoutExtension,
LoadByRelativePath
}

[DisallowMultipleComponent]
public class CustomLoader : MonoBehaviour
{
[Tooltip("通过关键字进行路径匹配,为路径生成短链接,可以按需使用")]
public string[] filters =
{
"Scenes", "Prefabs", "Textures"
};

[Tooltip("加载模式")] public LoadMode loadMode = LoadMode.LoadByRelativePath;


private string LoadByNameWithoutExtension(string assetPath)
{
if (filters == null || filters.Length == 0)
{
return null;
}

if (!Array.Exists(filters, assetPath.Contains))
{
return null;
}

var assetName = Path.GetFileNameWithoutExtension(assetPath);
return assetName;
}

private string LoadByName(string assetPath)
{
if (filters == null || filters.Length == 0)
{
return null;
}

if (!Array.Exists(filters, assetPath.Contains))
{
return null;
}

var assetName = Path.GetFileName(assetPath);
return assetName;
}

public void Initialize()
{
switch (loadMode)
{
case LoadMode.LoadByName:
Manifest.customLoader += LoadByName;
break;
case LoadMode.LoadByNameWithoutExtension:
Manifest.customLoader += LoadByNameWithoutExtension;
break;
default:
Manifest.customLoader = null;
break;
}
}
}

注意事项

使用自定义加载器有哪些限制?可以参考以下说明:

  • 自定义加载器需要在调用 Versions.InitializeAsync 之前初始化,否则将无法正常使用。
  • 使用自定义加载器需要自行规避同类型资产重名冲突问题,否则会导致资产加载失败,可以在初始化的时候留意下控制台日志,出现重名冲突会有打印。