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