読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

スクリプトからエディタを再生したり、停止したり、ポーズしたり、再開したり。【Unity】【エディタ拡張】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 5.3.4f1 Personal


はじめに

以前、スクリプトからエディタの再生を停止する方法が分からず、

代替案としてエディタを強制終了するという方法をご紹介しました。



ありがたいことに、その記事のコメントにて

スクリプトからエディタの再生を停止する方法を教えていただきました!


今回はそんな感じの記事です。


EditorApplication

スクリプトからエディタの再生を停止するには

EditorApplication.isPlayingをfalseにするだけでいいようです。


逆にEditorApplication.isPlayingをtrueにすると再生する事も出来ます。


さらにEditorApplication.isPausedで一時停止or再開

EditorApplication.Stepで1フレーム進ませる

という事も可能なようです。


まとめると以下のような感じ。

using UnityEditor;

public class NewBehaviourScript {

  //再生
  [MenuItem ("Custom/Play")]
  private static void Play () {
    EditorApplication.isPlaying = true;
  }

  //終了
  [MenuItem ("Custom/End")]
  private static void End () {
    EditorApplication.isPlaying = false;
  }

  //一時停止
  [MenuItem ("Custom/Pause")]
  private static void Pause () {
    EditorApplication.isPaused = true;
  }

  //再開
  [MenuItem ("Custom/Resume")]
  private static void Resume () {
    EditorApplication.isPaused = false;
  }

  //1フレーム進ませる
  [MenuItem ("Custom/Step")]
  private static void Step () {
    EditorApplication.Step();
  }

  //エディタを終了
  [MenuItem ("Custom/Exit")]
  private static void Exit () {
    EditorApplication.Exit(0);
  }

}


これをインポートすれば以下のようにツールバーから各メニューを実行できます!


f:id:kan_kikuchi:20160524184144p:plain


ボタン押した方が早いですけどね!


おわりに

そもそもなんで、スクリプトからエディタの再生を停止する方法が知りたかったかと言うと、

エディタを実行し、なんらかの計算(結構時間がかかるやつ)を行い、

計算が終わったらエディタを終了したかったからです。


ちなみになんらかの計算というのは、ゲームバランスの自動調整です。

諸々の数値を自動で調整し、かつ自動でゲームを遊ばせて、結果を取得する

という具合に、ある程度自動で調整出来たら楽だなーてなことをやってました(:3っ)∋〜。