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

しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

UnityでUIAlertViewControllerのようなものを出す

UnityではiOS標準のアラートを出してくれるプラグインはあるのですが、iPhone向けにコンパイルしないと検証できなかったりと少しめんどくさいです。
そこで完全自作でポップアップを作ってみます。

コードは以下のようになります。

var skin : GUISkin;

var isPopupShown = false;
function OnGUI () {
    if (GUI.Button(Rect(100, 100, 100, 100), "popup", skin.button)) {
        isPopupShown = true;
    }
    if (isPopupShown) {
        var x = (Screen.width - 200) / 2;
        var y = (Screen.height - 200) / 2;
        GUI.Box(Rect(x, y, 200, 200), "削除して宜しいですか?");
        if (GUI.Button(Rect(x + 50, y + 70, 100, 50), "はい")) {
            isPopupShown = false;
        };

        if(GUI.Button(Rect(x + 50, y + 130, 100, 50), "いいえ")) {
            isPopupShown = false;
        };
    }
}

実行結果は以下の通りです。

f:id:llcc:20160321111158p:plain

外枠はGUI.Boxで作っています。
中身はGUI.Buttonです。

isPopupShownという変数を使っていますが、これはポップアップ表示状態を維持する為のものです。
フラグを使わずにif (GUI.Button(Rect(100, 100, 100, 100), "popup", skin.button))の中でポップアップ生成処理を書けば良さそうに見えるのですが、OnGUIは毎秒何回も呼ばれるのでそれだと一瞬でポップアップが消えてしまいます。