} = 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();
        }
Esempio n. 3
0
        } = 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();
        }