今回、目標みたいなものですがメニュー用のボタン(装備やアイテムなど)を押したときにウィンドウがてで、アイテムなどを確認できるようにしたい。
さて、私は当初「ウィンドウの画像がいる」と思ってました。
しいていえば「Unityにはじめからあるウィンドウを使おう」と。
しかし、調べてもよくわからない!
私のゲーム作成経験はウディタなので難易度が違うのだ!
ここで、考えられたのが「ボタンなどを使って自分でウィンドウを作ろう」です。
こうなると必要なスクリプトは
・アイテムが増えるとボタンが増える
・クリックすると使用するか確認する
・そもそも、ウィンドウを表示・非表示にする
とりあえず、こうなると考える。
さて、今回はウィンドウの表示はbuttonを利用する(もちろんコマンドでもいいけど)
使うのは、UIの「canvas」と「panel」がポイントだ。
「canvas」は使うとわかるがゲーム中にずっと画面に映る
「panel」はcanvasの子なのでずっと映ります。
panelをウィンドウの全景としてbuttonを配置すればいいのだ。
今回の目的である「ウィンドウを消す」のために右上に「❌」を書いたbuttonを配置します。
まず、この❌ボタンのスクリプトを考える。
単純に考えるなら、ウィンドウである「panel」を消せばいい。
システム的にはわからないが、スクリプトでファイルの名前を指定し探す機能、は重いらしい?(要検証)
なので、どのファイルを消すか、指定する。
よって、(C#)
public GameObject obj;
と置けばいい。
これで、スクリプトを張ったオブジェクトにはobjを指定する旨がでる。
ここにウィンドウにした「panel」のオブジェクトを入れればいい。
次にbuttonで指定するためにプログラムを組む。
public void WinCan(){
}
こう指定してみる。
これでWinCanという関数が出来るわけだ。
中身は、「指定したオブジェクトを非表示にする」だ。
obj.SetActive (false);
を使う。
これで、指定したオブジェクトのactiveが0になるので見えなくなり操作も出来ない。
なお、SetActive以外でも出来るが、何度も使うならこちらが有用だと思う。
ついでに、非表示から表示するには
obj.SetActive(true);
を使います。
これには多々の問題が有りますので、改良はするべきだろう。
とりあえずこれで、表示と非表示は出来た。
残るは、
・アイテムの取得・使用に合わせたウィンドウ内のアイテムの増減
・使用するか聞く機能+アイテム説明
この2つは、アイテムのデータベースを作ってからにする。
今回のウィンドウがあればステータス画面ぐらいなら出来ると思う。
以上です。