【Unity】【エディタ拡張】非ランタイム・非MonoBehaviorでUnityWebRequest通信をする

EditorWindowなど、非ランタイム・非MonoBehaviorでUnityWebRequestを使った通信を行う方法です。

Unity2018.3.9

ソースコード

MonoBehaviorを継承していないクラスではコルーチンを使うことができません。
よってUnityWebRequestは以下のようにして待ち受けます。

/// <summary>
/// Editor上でUnityWebRequestで通信をする
/// </summary>
public static void EditorSendWebRequest(this UnityWebRequest self, Action onSuccess = null, Action onError = null)
{
    self.SendWebRequest();

    EditorApplication.CallbackFunction updateFunc = null;
    updateFunc = () =>
    {
        if (self.isDone)
        {
            if (self.isHttpError || self.isNetworkError || !string.IsNullOrEmpty(self.error)) {
                onError?.Invoke();
            }
            else {
                onSuccess?.Invoke();
            }
            EditorApplication.update -= updateFunc;
        }
    };

    EditorApplication.update += updateFunc;
}

参考

anchan828.github.io