FC2ブログ

記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサーリンク

育成ゲームが作りたい その4 ~メニューの開閉~

前回記事

これまでにキャラクターの生成、生成したキャラクターの削除機能を作りました。
今回は各種メニューの表示/非表示を切り替えられるようにしたいと思います。
ずっと表示されたままでは画面が狭くなってしまいますからね。

それでは早速

・メニュー開閉用ボタンを設置する
・開閉ボタンを押すたびにメニュー表示/非表示を切り替え


こんな感じでやってみます。

まずは開閉用ボタンを作りましょう。
他のUIと同じようにして用意します。

unity 161012 01

画像のように画面の邪魔にならない位置に設置します。
次にこのボタンを押したときに実行されるスクリプトを用意します。



Unity 161017 1 


では内容を見ていきます。

ボタンを押す→スクリプト実行→メニュー開閉

という流れなので、イモムシ君の生成でやったのと同じようにボタンのイベントシステムを使います。

public void MenuActive() というところがボタンを押したときに呼び出される関数です。
中身を見ていきます。

public void MenuActive(){
panel.SetActive(setVal);
if(setVal) setVal = false;
else setVal = true;
}

オブジェクト.SetActive(bool); 

この処理で指定したオブジェクトを有効/無効化できます。
GameObject型変数panelと
bool型変数のsetValは最初のほうに宣言してあります。

※panelにはゲームオブジェクトを指定する必要があります。
後ほどインスペクタから追加します。


bool型変数setValは宣言時にtrueと設定されています。
ですから、一番最初にメニューボタンをクリックしたときには

panel.SetActive(true);

という処理がされるわけですね。
SetActive(ここの値)がtrueであれば有効化、falseであれば無効化です。

if(setVal) setVal= .......

以降の部分は前回にも出てきました。
表示/非表示で切り替えるためにこの処理が必要になります。
setValが現在の値と反対になるようになっていますから、次にボタンがクリックされて
MenuActive()が呼び出された時には、前回と逆の処理(有効/無効化)がされるわけです。

一度目のクリックで SetActive(true) 、 二度目でSetActive(false)  ・・・・・
と交互になることでメニューが開閉されるわけですね。


スクリプトが用意できたら最終準備です。

最初に用意した開閉用ボタンに先程のスクリプトをアタッチします。
GameObject型のcanvasにインスペクタから、有効/無効化したいオブジェクトを設定しておきます。
下の画像で補足してあります。


unity 161012 03


画像ではイモムシ君生成ボタンとキャラクター削除トグルの親オブジェクトであるパネルを設定していますが
例えばプレイヤーを設定すると、ボタンを押したときにプレイヤーが消えます。

ボタンイベントも設定しておきましょう。
先程の画像の通りです。
On Click() のオブジェクトにスクリプトをアタッチしたボタン自身を設定。
NoFunctionとなっている部分のドロップダウンを開いて
「menu (作成したスクリプトファイルの名前) 」→「MenuActive() (ボタンを押したときに呼び出す関数)」
です。


unity 161012 04


上の画像のように、一番上のチェックを外しておくと
オブジェクトが初期状態で無効になります。
初期状態でメニューが無効化されているようにしたいので
親オブジェクトであるパネルのチェックを外しておきましょう。


これで完成です。
ゲームを実行してみるときちんとメニューの開閉ができるはずです。


今回はここまでです。
ありがとうございました。
スポンサーサイト

スポンサーリンク

コメント

コメントの投稿

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。