(:3[kanのメモ帳]

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

(:3[kanのメモ帳]

エディタ拡張で確認するためのウィンドウであるEditorUtility.DisplayDialogとDisplayDialogComplex【Unity】【エディタ拡張】


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

この記事でのバージョン
Unity 2018.4.1f.1


はじめに

以前、エディタ拡張時に使える

2つの選択肢を出して確認するためのウィンドウを自分で実装してみたという感じの記事を書きました。

ConfirmationEditorWindow.Open(
  title              : "ログ確認ウィンドウ",
  message            : "ログにメッセージを表示しても大丈夫ですか?\nヾ( ゚д゚)ノ゛",
  messageType        : MessageType.Warning,
  trueSelectionText  : "いいよ!",
  falseSelectionText : "だめ!!",
  callback           : OnSelectedConfirmation
);
//確認ウィンドウの選択がされた
private static void OnSelectedConfirmation(bool isSelectedTrue) {
  if (isSelectedTrue) {
    Debug.Log("ありがとうございます!ログ表示しました!");
  }
}

f:id:kan_kikuchi:20190609115550g:plain:w700


これはUnity自体にそういう機能がないと思って作ったのですが、

記事のコメントにて、実はUnityの機能に同様のものが存在するということを教えてもらいました……!


という事で今回は、実際にその機能を使ってみようという感じの記事です。

なお、この機能の事は全く知りませんでしたが、かなり前から存在していたようです。

(少なくともUnity5系のドキュメントにはあった)


EditorUtility.DisplayDialog

まず、エディタ拡張で確認するためのウィンドウの1つ目が

EditorUtilityのDisplayDialogです。



使い方は簡単、以下のように各文字列を指定してダイアログを表示し、

返り値でOK(右側)のボタンが押されたかのbool値がを受け取る感じです。

//ダイアログ表示、返り値でOKボタンが押されたかどうかを受け取る
bool isOK = EditorUtility.DisplayDialog("たいとる", "めっせーじ", "おーけー", "きゃんせる");

if (isOK) {
  /*おーけーボタンを押した時の処理*/
}
else {
  /*きゃんせるボタンを押した時の処理*/
}

f:id:kan_kikuchi:20190618135551j:plain


なお、左側のキャンセルボタンは省略する事も可能です。

//キャンセルボタンがないので、絶対true
bool isOK = EditorUtility.DisplayDialog("たいとる", "めっせーじ", "おーけー");

f:id:kan_kikuchi:20190618135557j:plain


EditorUtility.DisplayDialogComplex

次に、エディタ拡張で確認するためのウィンドウの2つ目が

EditorUtilityのDisplayDialogComplexです。



基本的にDisplayDialogと似たような感じですが、

ボタンが3つにあり、返り値がint(右のボタンから順に0, 1, 2)になりました。

//ダイアログを表示、押されたボタンの番号を取得
int pressedButtonNo = EditorUtility.DisplayDialogComplex("たいとる", "めっせーじ", "おーけー", "きゃんせる", "そのた");

f:id:kan_kikuchi:20190618135805p:plain


なお、DisplayDialogComplexの各ボタンの省略は出来ません。