Importer/Deleter
最終更新: 2020年1月30日
概述
Importer/Deleter是一个使用[AssetPostprocessor.OnPostprocessAllAssets()]的Unity Editor扩展功能。
OnPostprocessAllAssets 在任意数量的资产载入完成后调用,可以从参数中获取载入和删除资产的路径。
Importer/Deleter功能从获取的路径中调用对应的Importer/Deleter处理。
// 从载入的资产路径中获取载入器并执行载入处理
foreach (var assetPath in importedAssetPaths)
{
var importer = CubismImporter.GetImporterAtPath(assetPath);
if (importer == null)
{
continue;
}
importer.Import();
}
// 从载入的资产路径中获取载入器并执行载入处理
foreach (var assetPath in deletedAssetPaths)
{
var deleter = CubismDeleter.GetDeleterAsPath(assetPath);
if (deleter == null)
{
continue;
}
deleter.Delete();
}
这个处理是通过“CubismAssetProcessor.OnPostprocessAllAssets()”进行的。
CubismImporter / CubismDeleter
它是一个总结Importer/Deleter的类。
- 用于将Importer/Deleter的类型与对象文件的文件扩展名相关联的结构。
- ImporterEntry
- DeleterEntry
- 存储条目的列表。
- private static List
_registry = new List (); - private static List
_registry = new List ();
- private static List
- 它是一种在条目中注册Importer/Deleter的方法。
- internal static void RegisterImporter
(string fileExtension) where T : ICubismImporter - internal static void RegisterDeleter
(string fileExtension) where T : ICubismDeleter
- internal static void RegisterImporter
- 它是一种从路径中获取支持类型Importer/Deleter的方法。
- public static T GetImporterAtPath
(string assetPath) where T : class, ICubismImporter - public static ICubismImporter GetImporterAtPath(string assetPath)
- public static T GetDeleterAsPath
(string assetPath) where T : class, ICubismDeleter - public static ICubismDeleter GetDeleterAsPath(string assetPath)
- public static T GetImporterAtPath
ICubismImporter/ICubismDeleter
- 保存资产路径的处理。
- SetAssetPath(string value)
- Importer/Deleter的处理。
- Import()/Delete()
- 在Importer界面中保存Importer,并重新载入资产的处理。
- Save()
CubismImporterBase / CubismDeleterBase
它继承自ICubismImporter/ICubismDeleter接口,成为Importer/Deleter的基类。
Importer实装示例
using Live2D.Cubism.Editor.Importers;
public sealed class ImporterCustomization : CubismImporterBase
{
private static string _extension = ".asset";
[UnityEditor.InitializeOnLoadMethod]
private static void RegisterImporter()
{
CubismImporter.RegisterImporter<ImporterCustomization>(_extension);
}
public override void Import()
{
UnityEngine.Debug.Log("Asset Import as path : " + AssetPath);
}
}
Deleter的实装示例
using Live2D.Cubism.Editor.Deleters;
public sealed class DeleterCustomization : CubismDeleterBase
{
private static string _extension = ".asset";
[UnityEditor.InitializeOnLoadMethod]
private static void RegisterDeleter()
{
CubismDeleter.RegisterDeleter<DeleterCustomization>(_deleterAssetExtension);
}
public override void Delete()
{
UnityEngine.Debug.Log("Asset deleted as path : " + AssetPath);
}
}
请问这篇文章对您有帮助吗?
是否