(:3[kanのメモ帳]

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

(:3[kanのメモ帳]

「はい」と「いいえ」など、2つの選択肢を出して確認するためのウィンドウ【Unity】【エディタ拡張】


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


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


はじめに

エディタ拡張で何かをする前に「〇〇しますか?」のような確認が欲しいみたいな事はよくありますが、

残念ながらUnityにそういう標準機能はありません。

(もしあったらご一報頂けると幸いです!)

ありました!



という事で今回は「はい」と「いいえ」など、

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


ConfirmationEditorWindow

さっそく、「はい」と「いいえ」など、2つの選択肢を出して確認するためのウィンドウ

ConfirmationEditorWindowのコードです。



使い方は簡単、ConfirmationEditorWindow.Showを実行するだけ。

(callbackがよう分からんという方はこちらの記事を参照のこと)

//メニューからウィンドウを表示
[MenuItem("Window/Confirmation Editor Window")]
public static void Open() {
  //確認ウィンドウを表示
  ConfirmationEditorWindow.Open(
    title              : "たいとる",
    message            : "メッセージ",
    messageType        : MessageType.Warning,
    trueSelectionText  : "いえす",
    falseSelectionText : "のー",
    callback           : OnSelectedConfirmation
  );
}

//確認ウィンドウの選択がされた
private static void OnSelectedConfirmation(bool isSelectedTrue) {
  Debug.Log(isSelectedTrue);
}

f:id:kan_kikuchi:20190609113844g:plain


Openの引数は以下の通りで、

引数
title ウィンドウの上部(ヘッダー?)に表示される文字列
message ウィンドウの中央に表示される文字列
messageType メッセージの種類。None、Info、Warning、Errorの4つがある
trueSelectionText 左側に配置される「はい」に該当するボタンに表示される文字列、押されるとcallbackがtrueで実行される
falseSelectionText 右側に配置される「いいえ」に該当するボタンに表示される文字列、押されるとcallbackがfalseで実行される
callback ボタンを押された時に実行されるコールバック、引数はbool


MessageTypeの種類 イメージ
None f:id:kan_kikuchi:20190609115039j:plain
Info f:id:kan_kikuchi:20190609115045j:plain
Warning f:id:kan_kikuchi:20190609115051j:plain
Error f:id:kan_kikuchi:20190609115058j:plain



どの引数も省略する事も可能です。

ConfirmationEditorWindow.Open();

f:id:kan_kikuchi:20190609114245j:plain


また、選択肢ボタンの文字列を空文字にする事で、ボタンを一つにする事も可能です。

ConfirmationEditorWindow.Open(
  title              : "たいとる",
  message            : "メッセージ",
  messageType        : MessageType.Warning,
  trueSelectionText  : "いえす",
  falseSelectionText : "", //falseの選択肢を表示しない
  callback           : OnSelectedConfirmation
);

f:id:kan_kikuchi:20190609114534j:plain



なお、ウィンドウは常に前面にされ、

左上のバツボタンで消すことも可能ですが、その際もコールバックがfalseで実行されます。


f:id:kan_kikuchi:20190609114133g:plain