} = true; // ログ出力が有効の場合 true //============================================================================== // 関数 //============================================================================== /// <summary> /// タスクを追加します /// </summary> public void Add(string text, Action <Action> task) { #if ENABLE_DEBUG_LOG m_task.Add(onEnded => { Log($"【SingleTask】「{m_name}」「{text}」開始"); task(() => { Log($"【SingleTask】「{m_name}」「{text}」終了"); onEnded(); }); }); #else m_task.Add(text, task); #endif }
/// <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(); }
} = true; // ログ出力が有効の場合 true //============================================================================== // 関数 //============================================================================== /// <summary> /// タスクを追加します /// </summary> public void Add(string text, Action <Action> task) { #if ENABLE_DEBUG_LOG m_task.Add(onEnded => { Log($"【SingleTask】「{m_name}」「{text}」開始"); var startTime = Time.realtimeSinceStartup; task(() => { Log($"【SingleTask】「{m_name}」「{text}」終了 {( Time.realtimeSinceStartup - startTime ).ToString( "0.###" ) } 秒"); onEnded(); }); }); #else m_task.Add(text, task); #endif }
} = true; // ログ出力が有効の場合 true //============================================================================== // 関数 //============================================================================== /// <summary> /// タスクを追加します /// </summary> public void Add(string text, Action <Action> task) { #if ENABLE_DEBUG_LOG m_task.Add(onEnded => { Log($"【SingleTask】「{m_name}」「{text}」開始"); var startTime = Time.realtimeSinceStartup; var gcWatcher = new GCWatcher(); gcWatcher.Start(); task(() => { gcWatcher.Stop(); Log($"【SingleTask】「{m_name}」「{text}」終了 {( Time.realtimeSinceStartup - startTime ).ToString( "0.###" ) } 秒 GC {gcWatcher.Count.ToString()} 回"); onEnded(); }); }); #else m_task.Add(text, task); #endif }
/// <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(); }