Unityに関連する記事です

 以下の内容で順番に実装を進めていきます。

28.ResultPopUpスクリプトを修正する パズルゲーム再スタート用のボタンの制御
29.GameDataスクリプトを修正する 再スタートのメソッドを追加
30.完成。ゲームのサイクルを確認する



 新しい学習内容は、以下の通りです。

・Button.onClick.AddListenerメソッド スクリプトからボタンタップ用メソッドの登録



28.ResultPopUpスクリプトを修正する パズルゲーム再スタート用のボタンの制御


 ResultPopUpスクリプトを修正します。新しくY軸の位置情報を代入する変数を用意し、ゲーム開始時のResultPopUpゲームオブジェクトの位置情報を保存しておきます。
こうすることで、画面中央に移動したResultPopUpゲームオブジェクトを、最初の位置に戻すことが可能になります。

 また画面をタップした際の処理も追加します。btnclosePopUp 変数にスクリプトから、新しく作成するOnClickMovePopUpメソッドを登録して実行できるようにします。
そのためUnity上のButtonコンポーネントのOnClickイベントにはメソッドを登録する必要はありません。

 そしてOnClickMovePopUpメソッドの処理の中で、GameDataクラスへ用意する、ゲームを再スタートさせるメソッドの呼び出し命令も記述します。


ResuluPopUp.cs

 <= クリックすると開きます。



<Button.onClick.AddListenerメソッド スクリプトからボタンタップ用メソッドの登録>


 ButtonコンポーネントにはOnClickというイベントを登録する場所があります。ここにゲームオブジェクトのアサインを行うことで、
アサインしたゲームオブジェクトにアタッチされているスクリプトに宣言されている public 修飾子のメソッドを登録することができます。




 この処理をスクリプトから追加して行う処理が、onClick.AddListenerメソッドです。引数のない場合と引数のある場合で書式が変化します。

 利点は、メソッドをprivate修飾子でも登録できること、スクリプトから登録しているので、Unity内の上記の画像のButton部分への登録作業や、確認をする必要がなくなること、などがあります。

 今回は引数のないメソッドを登録していますので、引数にはそのままメソッド名を記述します。メソッドの()を書くとエラーになるので、メソッド名のみを記述します。

btnClosePopUp.onClick.AddListener(OnClickMovePopUp);

 詳細については公式のリファレンスを参考にしてください。またネットには記事が多くありますので調べてみましょう。

Unity公式スクリプトリファレンス
Button.on.Click.AddListener
https://docs.unity3d.com/2019.1/Documentation/Scri...


29.GameDataスクリプトを修正する 再スタートのメソッドを追加


 ResultPopUpスクリプトのOnClickMovePopUpメソッドから呼び出される、新しいRestartGameメソッドを追加します。

 このメソッドはコルーチンメソッドになっていて、一定時間の待機後に再度、Gameシーンの読み込みを行うように処理を行っています。
ゲームを再スタートさせる処理になります。 

GameData.cs

 <= クリックすると開きます



ゲームを実行して確認する


 ゲームを実行して確認をします。残り時間が 0 になり、ResultPopUpゲームオブジェクトが画面中央に表示されて、画面をタップ表示が出てから画面をタップすると
ResultPopUpゲームオブジェクトが上部に戻っていくとともに、Gameシーンが再度読み込まれて、再びゲームが開始されます。

 下記の検証動画では、btnClosePopUpゲームオブジェクトのインスペクターを表示しています。
ButtonコンポーネントのOnClickイベントにUnity上での登録はありませんが正常にタップを感知してOnClickMovePopUpメソッドが動作しているのが分かります。


検証動画
https://gyazo.com/fb38ab061df787bcce4c8f9a6d07e7df

 エラーが出たり、一連の処理の流れが繋がらない場合にはDebug.Logを入れて、どこまで処理の流れが正常に動いているかを確認してみましょう。


30.完成。ゲームのサイクルを確認する


 おつかれさまでした!

 無事にパズルゲームの基本的な動作はすべて完了し、ゲームのサイクルも完成しました。以下のように処理がサイクル化されていると思います。

1.ゲームを実行すると、ランダムな干支が指定した数だけ生成される。
  ↓
2.制限時間内に干支をドラッグ(スワイプ)して、つなげて消す。
  ↓
3.制限時間が 0 になるとリザルトポップアップが表示されて、今回のゲーム結果が表示される。
  ↓
4.画面をタップすると1に戻る


 次の教材である発展編では、この基礎編をベースに、さらにゲームを面白くするために、演出や仕掛けを追加していきます。



 以上でこの手順は終了です。

 次は 発展1 です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます