御幸備忘録

主にUnityに関してのブログです。

Unityにダイアログボックスを実装する【DisplayDialog】

はじめに

 Unityでダイアログを出したいという人向けに、DisplayDialogが容易されています。一時的でいいので簡単な確認画面や選択用にポップアップが欲しい人に便利です。

 公式リファレンスにも載っているのですが、ほとんど翻訳されていません。

使い方

 EditorUtility.DisplayDialog()で呼び出すことが出来ます。

public static bool DisplayDialog (string title, string message, string ok, string cancel= ""); 
public static bool DisplayDialog (string title, string message, string ok, DialogOptOutDecisionType dialogOptOutDecisionType, string dialogOptOutDecisionStorageKey);
public static bool DisplayDialog (string title, string message, string ok, string cancel= "", DialogOptOutDecisionType dialogOptOutDecisionType, string dialogOptOutDecisionStorageKey); 

 (公式リファレンスが悪い気がするのですが、)キャンセルに当たる文字列に、空の文字列(""またはフィールドを用意しない)を送る場合と何か文字列を送る場合でダイアログボックスが変わります。空の文字列の場合、キャンセルが表示されなくなります。(じゃあ、オーバーロード実装でいいのでは…)

 下2つは2回目以降表示しないボタンが表示されます。DialogOptOutDecisionTypeで、このセッションかこの端末で2度と表示しないか選べます。
 dialogOptOutDecisionStorageKeyには任意の文字列を入力します。これがキーになります。
 当然ですが、このボタンを押すとこのダイアログボックスは表示されなくなります。解除するにはEditorPrefsから削除しなければいけないようです。
 下2つの場合はcancelの値に関わらずボタンが表示されます。

注意点

 UnityEditor内にあることから分かりますが、あくまでエディター拡張機能のためのメソッドです。このダイアログをビルド時に含むことは出来ません。コンパイラに怒られます。
 そのためアプリに入れたい場合は、UGUIなど似たような機能を作るか、iOSAndroid向けにプラグインで実装する必要があります。

 個人的には、アプリ合わせたデザインでダイアログ(またはポップアップ)を作った方いいと思います。デザイン面で優れているのと、プラグインを作るよりダイアログのUIを作った方が早く終わるのが理由です。