Importer/Deleter
最終更新: 2020年1月30日
このページはCubism 4.2以前の古いバージョン向けです。 最新のページはこちら
概要
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<ImporterEntry> _registry = new List<ImporterEntry>();
- private static List<DeleterEntry> _registry = new List<DeleterEntry>();
- エントリーにImporter/Deleterを登録するメソッドです。
- internal static void RegisterImporter<T>(string fileExtension) where T : ICubismImporter
- internal static void RegisterDeleter<T>(string fileExtension) where T : ICubismDeleter
- パスから対応タイプのImporter/Deleterを取得するメソッドです。
- public static T GetImporterAtPath<T>(string assetPath) where T : class, ICubismImporter
- public static ICubismImporter GetImporterAtPath(string assetPath)
- public static T GetDeleterAsPath<T>(string assetPath) where T : class, ICubismDeleter
- public static ICubismDeleter GetDeleterAsPath(string assetPath)
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); } }
この記事はお役に立ちましたか?
はいいいえ