コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】コルーチンのプロファイラを使用できる「PerfAssist」紹介

はじめに

「PerfAssist」を Unity プロジェクトに導入することで
コルーチンのプロファイラを使用できるようになります

使い方

using System.Collections;
using UnityEngine;

#if UNITY_EDITOR
using UnityEditor;
#endif

public class Example : MonoBehaviour
{
    void SendEditorCommand( string cmd )
    {
#if UNITY_EDITOR
        var w = EditorWindow.GetWindow<EditorWindow>( "CoTrackerWindow" );
        if ( w.GetType().Name != "CoTrackerWindow" ) return;
        w.SendEvent( EditorGUIUtility.CommandEvent( cmd ) );
#endif
    }

    private void Awake()
    {
        CoroutineRuntimeTrackingConfig.EnableTracking = true;
        StartCoroutine( RuntimeCoroutineStats.Instance.BroadcastCoroutine() );

        SendEditorCommand( "AppStarted" );

        CoroutinePluginForwarder.InvokeStart_IEnumerator = RuntimeCoroutineTracker.InvokeStart;
        CoroutinePluginForwarder.InvokeStart_String = RuntimeCoroutineTracker.InvokeStart;

        RuntimeCoroutineTracker.InvokeStart( this, "TestCoroutine" );
    }

    private void OnDestroy()
    {
        SendEditorCommand( "AppDestroyed" );
    }

    private IEnumerator TestCoroutine()
    {
        while ( true )
        {
            yield return new WaitForSeconds( 0.3f );
        }
    }
}

上記のようなコードを記述して

f:id:baba_s:20190104164935p:plain

Unity メニューの「Window>PerfAssist>CoroutineTracker」を選択すると

f:id:baba_s:20190104165024p:plain

コルーチンのプロファイラを使用できます