Importer/Deleter
업데이트: 2020/01/30
개요
Importer/Deleter는 [AssetPostprocessor.OnPostprocessAllAssets()]를 이용한 Unity 에디터의 확장 기능입니다.
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);
}
}
이 기사가 도움이 되었나요?
네아니요