/// <summary> /// 複数の FontAsset を順番に更新します /// </summary> private void OnUpdateMulti() { var list = targets .Select(c => c as TMP_FontAssetUpdaterSettings) .Where(c => c != null) ; if (!list.Any()) { return; } var task = new SingleTask(); foreach (var n in list) { task.Add(onEnded => { var updater = new TMP_FontAssetUpdater(); updater.Start(n, onEnded); }); } task.Play(); }
/// <summary> /// いずれかのアセットが変更された時に呼び出されます /// </summary> private static void OnPostprocessAllAssets ( string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths ) { // TextAsset に変更があったかどうかを確認 var textAssetList = importedAssets .Where(c => c.EndsWith(".txt")) .Select(c => AssetDatabase.LoadAssetAtPath <TextAsset>(c)) .Where(c => c != null) ; // 変更が無い場合は無視 if (!textAssetList.Any()) { return; } // Unity プロジェクトに含まれている TMP_FontAssetUpdaterSettings をすべて取得 var settingsList = AssetDatabase .FindAssets("t:TMP_FontAssetUpdaterSettings") .Select(c => AssetDatabase.GUIDToAssetPath(c)) .Select(c => AssetDatabase.LoadAssetAtPath <TMP_FontAssetUpdaterSettings>(c)) .Where(c => c != null) .Where(c => c.IsAutoUpdate) .ToArray() ; // 存在しない場合は無視 if (!settingsList.Any()) { return; } // 変更があった TextAsset が TMP_FontAssetUpdaterSettings で参照されているか確認 var targets = settingsList .Where(c => textAssetList.Contains(c.CustomCharacterList)) ; // すべて参照されていない場合は無視 if (!targets.Any()) { return; } // TMP_FontAssetUpdaterSettings が参照している TextAsset に変更があった場合は // 該当する FontAsset を更新する var task = new SingleTask(); foreach (var n in targets) { task.Add(onEnded => { var updater = new TMP_FontAssetUpdater(); updater.Start(n, onEnded); }); } task.Play(); }