【Unity6】uGUI(Button)で更新機能を実装! foreach, Destroy, Instantiate【ツムツム風6】
Unity5.0.0f4 Personal(2015年5月)
前回の続きです〜
今回はゲームに詰まった時にあたらしいひよこに更新するひよこExchangeボタンを作りたいと思います〜
【目標】更新機能をつける!
【課題1】ひよこExchangeボタンを作る
ゲームを進めていくとどうやってもひよこを消すことができず、詰まってしまうことがあります〜そんな時、一旦全てのひよこを削除して、再度50個のひよこを作成することができれば、ゲームを続行することができます!というわけで早速作っていきます〜まずは床部分のScale.Yを、1から2に変更します!
Yを1から2に変更
床が少し大きくなる
続いて床に重なるようにひよこExchangeボタンを作成します〜HierarchyからCreate>UI>Buttonを選択し、以下のように設定して下さい〜
また、GUI(Button)については以下エッセンスにて詳しく書いてありますので、ご参照下さい〜
名前はExchange、位置は画面下
ボタンのText設定
こんな感じ
【課題2】ひよこを交換するスクリプトを作成する
続いてExchangeScriptを作成し、今作成したExchangeオブジェクトに取り付けていきます〜以下ソースです!
public変数のballScriptがあるので、ballScriptの付いているMainCameraを指定してあげます〜
ドラッグ&ドロップ!
次にひよこプレファブ(Piyo)に、「Respawn」というタグを付けます〜
プレファブのInspectorからTag>Respawnを選択
ExchangeScriptの中にはメソッドがひとつしかありません〜Exchangeメソッドです!まずはpiyosという配列に、Hierarchy上にある「Respawn」というタグのついたオブジェクト(つまりひよこ)を全て格納します〜そして、ひよこ達をforeach文でひとつひとつ取り出し、Destroyしています〜
全てDestroyし終わったら、ballScriptのDropBallメソッドを呼び出し、新しくひよこを作成しています〜50匹のひよこを作りたいので、50を引数としています〜
次にボタンを押した時にExchangeメソッドが実行されるように設定します〜ExchangeオブジェクトのInspectorからButton(Scrip)>On Click ()に進み、プラスボタンを押して下さい〜
プラスボタンを押す
出てきた項目の2行目をExchangeに変更し、1行目右の「No Function」と書かれた項目をExchangeScript>Exchange ()に変更して下さい〜
準備OK
これで一応動くようになったのですが、このひよこExchangeボタンは連打すると想定外に大量のひよこを生成してしまいます〜なので、ballScriptのDropBallメソッドを実行した時にひよこExchangeボタンを一定時間押せなくする処理を追記します〜以下ソースです!
引数のcountが50だった時のみ、RestrictPushメソッドを実行しています〜メソッド内では5秒間ひよこExchangeボタンを押せない状態を継続し、5秒経過すると再び押せるようにしています〜
interactableというプロパティをfalseにすることで、ボタンを押せない状態(Disabled状態)を実現しています〜
これ以上無理!となった時ひよこExchangeボタンを押すと・・・
新たなひよこに入れ替わる
5秒後には再び使えるようになっている
無事実装できました〜今回はここまでです〜
ありがとうございました〜
【Unity開発6】ひよこをなぞって消したい!【つむつむ風3】
【Unity開発6】なぞったひよこだけ色を変えたい!【つむつむ風4】
【Unity開発6】ひよこExchangeボタン(更新機能)を作りたい!【つむつむ風6】
【Unity開発6】制限時間とゲームオーバーを実装したい!【つむつむ風7】