/// <summary> /// タスクを実行します /// </summary> public void Play(string text, Action onCompleted = null) { #if ENABLE_DEBUG_LOG m_name = text; Log($"【SingleTask】「{m_name}」開始"); m_task.Play(() => { Log($"【SingleTask】「{m_name}」終了"); onCompleted?.Invoke(); }); #else m_task.Play(text, onCompleted); #endif }
/// <summary> /// タスクを実行します /// </summary> public void Play(string text, Action onCompleted = null) { #if ENABLE_DEBUG_LOG m_name = text; Log($"【SingleTask】「{m_name}」開始"); var startTime = Time.realtimeSinceStartup; m_task.Play(() => { Log($"【SingleTask】「{m_name}」終了 {( Time.realtimeSinceStartup - startTime ).ToString( "0.###" ) } 秒"); onCompleted?.Invoke(); }); #else m_task.Play(text, onCompleted); #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(); }
/// <summary> /// タスクを実行します /// </summary> public void Play(string text, Action onCompleted = null) { #if ENABLE_DEBUG_LOG m_name = text; Log($"【SingleTask】「{m_name}」開始"); var startTime = Time.realtimeSinceStartup; var gcWatcher = new GCWatcher(); gcWatcher.Start(); m_task.Play(() => { gcWatcher.Stop(); Log($"【SingleTask】「{m_name}」終了 {( Time.realtimeSinceStartup - startTime ).ToString( "0.###" ) } 秒 GC {gcWatcher.Count.ToString()} 回"); onCompleted?.Invoke(); }); #else m_task.Play(text, onCompleted); #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(); }