【Unity】ダイアログ出してみた!with NGUI
おはようございます!
おなじみ坂内です。
花粉やばいっす!なんか今日はそれほどじゃないんですが、土日がやばかった!
スマホから半径1mの花粉をやっつけてくれるアプリないですかねー
え?物理的にむりだって?了解!
本日はダイアログについてです。
ゲームにダイアログって必須ですよね?
でもネットで調べても素敵な方法が出てこない!(OnGUIのダイアログは色々でてきますが)
ということで、NGUIでダイアログつくってみよー的な感じです。
まずは、ボタンとダイアログの背景の絵を用意します。


んで、これをAtlasに組み込んでおきます。
Scriptも作っておきます。
MainControl ⇒ ボタン押したときの処理と、ダイアログから戻ってきた時の処理
DialogControl ⇒ ダイアログにて、OK・NOを押した時の処理
とりあえずこんな感じで考えてみましたが、どうなんだろう。
DialogControlにてボタン押した時の処理をするのが一番早いんだけど、そうなるとDialogControlという名前に違和感が・・
ってことで、処理はMainControlの方に置いておきます。(こんな感じでいいのかな?)
で、中身はまずはこんな感じ。
【MainControl】
【DialogControl】
どうでしょう。
こんな感じで動きそうじゃないっすか?
んじゃボタンを作ってみましょう。

一番上のオブジェクトの名前を「Test」にして、このオブジェクトにMainControlをつけておきます。
DialogControlのClick_OKメソッドで呼ばれるオブジェクトになります。
ここで、mainPanelというPanel。dialogというPanelを用意しました。
mainPanelにはボタンを追加しています。
で、ボタンの方にはNGUIのUIButtonMessageやUIButton等のコンポーネントをつけて、MainControlのOpenDialogを呼ぶようにします。
では、次にダイアログを作っていきます。
ダイアログはPrefabにして置いておくのでどんな形でもいいですが、今回はPanelを用意し、その下にダイアログの背景、ボタン等を作成します。(ここが不明なんですが、ふつうはどうするんだろう?)

メインパネルの表にダイアログが来ないといけないので、mainPanelのDepthは「0」にdialogのDepthは「1」にしています。
で、dialogの子供にバックグラウンドとボタンを二つ作成しました。
とりあえず押してる感を出すため、各ボタンにはNGUIのUIButtonScaleをくっつけてみます。
その後、dialogのオブジェクトにはDialogControlをつけます。

ちゃんとOKボタンとNOボタンに先ほど作ったDialogControlのメソッドをくっつけてやります。

ここまでできたら、ダイアログ側のオブジェクト完成です!
ダイアログ側の処理が全部作れたら、プレハブにしちゃいます。

プレハブ化が終わったら、ヒエラルキーからdialogをけしまーす。
そしたら次は、Testオブジェクトに付けたMainControlの「public GameObject dialogPref」で用意したdialogPrefに先ほど作成したdialogのプレハブをつけます。

はい、出来上がり。
さて実行してみましょう。

しーーーーーーん。
あれ?
ボタンにコライダーつけていませんでした!
大事です!忘れないでください!(おれだけ?

で、実行をすると・・・・
画面が灰色に!!!

なんか、dialogの場所がおかしいです!
プレハブ化する前の場所ってCameraの下でしたよね。
ってことで、Cameraの子供にダイアログが来るようにコードを修正します。
【DialogControl】
でやってみると・・・・・

でた!!
OKボタン押すとちゃんとメッセージでるし、NOボタン押すとメッセージでないでダイアログが閉じます!
って感じでダイアログ使ってます。色々間違えているような気もするが・・・・
正しいというか、一般的なダイアログってみなさんどうしてるんでしょうか?
何か方法ございましたら、喜んで聞きます!
以上、本日の記事でした!
おなじみ坂内です。
花粉やばいっす!なんか今日はそれほどじゃないんですが、土日がやばかった!
スマホから半径1mの花粉をやっつけてくれるアプリないですかねー
え?物理的にむりだって?了解!
本日はダイアログについてです。
ゲームにダイアログって必須ですよね?
でもネットで調べても素敵な方法が出てこない!(OnGUIのダイアログは色々でてきますが)
ということで、NGUIでダイアログつくってみよー的な感じです。
まずは、ボタンとダイアログの背景の絵を用意します。


んで、これをAtlasに組み込んでおきます。
Scriptも作っておきます。
MainControl ⇒ ボタン押したときの処理と、ダイアログから戻ってきた時の処理
DialogControl ⇒ ダイアログにて、OK・NOを押した時の処理
とりあえずこんな感じで考えてみましたが、どうなんだろう。
DialogControlにてボタン押した時の処理をするのが一番早いんだけど、そうなるとDialogControlという名前に違和感が・・
ってことで、処理はMainControlの方に置いておきます。(こんな感じでいいのかな?)
で、中身はまずはこんな感じ。
【MainControl】
using UnityEngine; |
【DialogControl】
using UnityEngine; |
どうでしょう。
こんな感じで動きそうじゃないっすか?
んじゃボタンを作ってみましょう。

一番上のオブジェクトの名前を「Test」にして、このオブジェクトにMainControlをつけておきます。
DialogControlのClick_OKメソッドで呼ばれるオブジェクトになります。
ここで、mainPanelというPanel。dialogというPanelを用意しました。
mainPanelにはボタンを追加しています。
で、ボタンの方にはNGUIのUIButtonMessageやUIButton等のコンポーネントをつけて、MainControlのOpenDialogを呼ぶようにします。
では、次にダイアログを作っていきます。
ダイアログはPrefabにして置いておくのでどんな形でもいいですが、今回はPanelを用意し、その下にダイアログの背景、ボタン等を作成します。(ここが不明なんですが、ふつうはどうするんだろう?)

メインパネルの表にダイアログが来ないといけないので、mainPanelのDepthは「0」にdialogのDepthは「1」にしています。
で、dialogの子供にバックグラウンドとボタンを二つ作成しました。
とりあえず押してる感を出すため、各ボタンにはNGUIのUIButtonScaleをくっつけてみます。
その後、dialogのオブジェクトにはDialogControlをつけます。

ちゃんとOKボタンとNOボタンに先ほど作ったDialogControlのメソッドをくっつけてやります。

ここまでできたら、ダイアログ側のオブジェクト完成です!
ダイアログ側の処理が全部作れたら、プレハブにしちゃいます。

プレハブ化が終わったら、ヒエラルキーからdialogをけしまーす。
そしたら次は、Testオブジェクトに付けたMainControlの「public GameObject dialogPref」で用意したdialogPrefに先ほど作成したdialogのプレハブをつけます。

はい、出来上がり。
さて実行してみましょう。

しーーーーーーん。
あれ?
ボタンにコライダーつけていませんでした!
大事です!忘れないでください!(おれだけ?

で、実行をすると・・・・
画面が灰色に!!!

なんか、dialogの場所がおかしいです!
プレハブ化する前の場所ってCameraの下でしたよね。
ってことで、Cameraの子供にダイアログが来るようにコードを修正します。
【DialogControl】
using UnityEngine; |
でやってみると・・・・・

でた!!
OKボタン押すとちゃんとメッセージでるし、NOボタン押すとメッセージでないでダイアログが閉じます!
って感じでダイアログ使ってます。色々間違えているような気もするが・・・・
正しいというか、一般的なダイアログってみなさんどうしてるんでしょうか?
何か方法ございましたら、喜んで聞きます!
以上、本日の記事でした!
Category: 開発日記(Unity)
« 【Unity】UnityのエディタをVisual Studio Express 2013 にしてみた | 【Unity】ResourcesからSpriteファイルを取得 »
コメント
| h o m e |