コガネブログ

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

【Unity】エディタ拡張でコルーチンを使用できるパッケージが Package Manager からインストールできるようになった(現在はプレビュー版)

はじめに

https://docs.unity3d.com/Packages/com.unity.editorcoroutines@0.0/manual/

エディタ拡張でコルーチンを使用できるパッケージが
Package Manager からインストールできるようになっていました
2018/12/14 現在はプレビュー版となっております

インストール方法

f:id:baba_s:20181215130805p:plain

Unity メニューの「Window>Package Manager」から
「Editor Coroutines」をインストールすることで使用できるようになります

使い方

// コルーチンを開始する
// 第 2 引数にコルーチンを開始したオブジェクトを指定する必要がある
EditorCoroutineUtility.StartCoroutine( Test(), this );

// コルーチンを開始する
// コルーチンを開始したオブジェクトを指定しなくても使用できる
EditorCoroutineUtility.StartCoroutineOwnerless( Test() );

// コルーチンを停止する
var c = EditorCoroutineUtility.StartCoroutine( Test(), this );
EditorCoroutineUtility.StopCoroutine( c );

EditorCoroutineUtility クラスに定義されている関数を呼び出すことで使用できます

使用例

using System.Collections;
using Unity.EditorCoroutines.Editor;
using UnityEditor;
using UnityEngine;

public class Example : EditorWindow
{
    private EditorCoroutine m_coroutine;

    [MenuItem( "Tools/Hoge" )]
    private static void Init()
    {
        GetWindow<Example>();
    }

    private void OnGUI()
    {
        if ( GUILayout.Button( "開始(オーナー指定あり)" ) )
        {
            m_coroutine = EditorCoroutineUtility.StartCoroutine( Test(), this );
        }
        if ( GUILayout.Button( "開始(オーナー指定なし)" ) )
        {
            m_coroutine = EditorCoroutineUtility.StartCoroutineOwnerless( Test() );
        }
        if ( GUILayout.Button( "停止" ) )
        {
            EditorCoroutineUtility.StopCoroutine( m_coroutine );
        }
    }

    private IEnumerator Test()
    {
        while ( true )
        {
            Debug.Log( "ピカチュウ" );
            yield return null;
        }
    }
}