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); } }
이 기사가 도움이 되었나요?
네아니요