unity ステータスウィンドウをつくる! | ブログ

ブログ

とりあえず、作成

今回、目標みたいなものですがメニュー用のボタン(装備やアイテムなど)を押したときにウィンドウがてで、アイテムなどを確認できるようにしたい。

さて、私は当初「ウィンドウの画像がいる」と思ってました。
しいていえば「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つは、アイテムのデータベースを作ってからにする。

今回のウィンドウがあればステータス画面ぐらいなら出来ると思う。

以上です。