Unityに関連する記事です

 前回の手順でプレファブにした Grid を活用し、スクリプトを利用して、ゲーム画面に9つの Grid を自動生成する機能を実装します。


<実装動画>
動画ファイルへのリンク


 この手順は実践課題になります。自分で処理を考えて、実装に挑戦してみましょう。

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

手順4 ーロジックに基づいたプレファブの生成と配列による管理方法ー
 7.Grid ゲームオブジェクトのプレファブをゲーム画面に9つ並ぶように生成する
 8.生成した Grid を配列に代入して管理できるようにする



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

 ・ゲームオブジェクトを生成する処理を考えてプログラムを書くことに挑戦する
 ・for 文と配列を組み合わせたロジックの考え方
 ・Summary(サマリー)機能



7.Grid ゲームオブジェクトのプレファブをゲーム画面に9つ並ぶように生成する

1.設計


 プレファブになっている Grid ゲームオブジェクトの生成を行うようにしましょう。

 Unity の教科書の矢を生成する処理や、ブロック崩しゲームのブロックを生成する処理などが参考になります。

 複数の Grid ゲームオブジェクトを効率よく生成するにはどのような処理を考えていけばいいのかを検討してみてください。

 ゲームオブジェクトを生成するには、生成元となるゲームオブジェクトの情報だけではなく、どの位置に生成するのかも必要になります。
またループ文を利用して生成する場合には繰り返す回数の指定も必要になります。

 プログラムを書く前に、しっかりと自分でイメージを作り、言語化していくことが大切です。


2.サンプル


 上記のヒントを元に、自分で調べてみて処理を書いてみてください。

 下記にはサンプルを提示してありますが、まずは見ないで書いてみることに挑戦してください。


GameManager.cs

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



3.<Summary(サマリー)機能>


 関数(メソッド)やクラスを作成し終わりましたら、必ずその関数やクラスの説明を書くように心がけましょう。書く場所は関数名、あるいはクラス名の1行上の部分です。
作成が終了したメソッドやクラスの1行上で半角スラッシュを3個連続で記述すると、説明用のコメント欄であるサマリー(概要)が自動的に記述されます

 別の記事で詳しく解説していますので、そちらを確認しておいてください。


 => 知っておきたい豆知識


4.ゲームを実行して動作を確認する


 スクリプトを書いたらゲームを実行して、自分で書いた処理が、自分の思っているように動作するかを検証してください。

 プログラムを書くことは、トライ&エラーの連続です。1回でできなくても問題ありません。
問題点を見つけて修正していくことが、処理を覚え、プログラムを書く技術のスキルアップにつながります。


ヒエラルキー画像



Scene ビュー/Game ビュー画像



<実装動画>
動画ファイルへのリンク


 正常に動作したら、次の課題に取り組みましょう。


8.生成した Grid を配列に代入して管理できるようにする

1.設計


 先ほど作ったプログラムによって、1つのプレファブから複数の Grid ゲームオブジェクトのクローンを作成することができました。
綺麗に並んでいますが、プログラム側から処理の内容を見た場合、ヒエラルキーに並んで居るゲームオブジェクトを管理する部分までは処理が出来ていません。

 複数の同じ種類のゲームオブジェクトをプログラムによって管理をすることにより、2マス目の Grid ゲームオブジェクトを指定する、といった利用が出来ます。
逆説的に言うならば、管理ができていないと、ヒエラルキーに並んで居る Grid ゲームオブジェクトに対しては、命令が出せない状態のままである、とも言えます。

 そのため、ゲームオブジェクトを作成した場合には、その後、そのゲームオブジェクトに対しての継続的な管理が必要になるのか、不要なのかを考えて設計する必要があります。

 今回の場合は、ゲームオブジェクトを並べて終わり、ではなく、その後、Grid ゲームオブジェクトをタップしたら、その位置に〇印をつけたり、
すでに〇印がついている場合には重複してつけらないようにする、といった形での継続的なゲームオブジェクトの制御が不可欠になりますので、よって、ゲームオブジェクトの管理が必要になります。

 こういった場合、プログラムにはコレクションという機能が用意されています。
その中の1つである配列の機能を活用し、1つの配列変数を作成して、その要素(中身)として各 Grid ゲームオブジェクトを代入しておくようにします。
この手順を行うことにより、配列変数によってすべての生成された Grid ゲームオブジェクトの管理が可能になります。

 配列変数に代入する方法は複数ありますが、最も効率的な方法は、ゲームオブジェクト生成のタイミングです。
Unity でゲームオブジェクトを生成する際には Instantiate メソッドを利用します。
このメソッドには戻り値が設定されており、生成したゲームオブジェクトの情報も戻り値として活用できます。

 そのため、Instantiate メソッドの戻り値として配列変数を準備しておくことで、ゲームオブジェクトの生成と同時に配列変数への代入処理も一緒に行うことが出来ます。

 この方法は、あらゆるゲームにおいて役立つ方法です。取得して、応用できるようにしていきましょう。


2.サンプル


 上記のヒントを元に、自分で調べてみて処理を書いてみてください。

 下記にはサンプルを提示してありますが、まずは見ないで書いてみることに挑戦してください。


GameManager.cs

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




3.ゲームを実行して動作を確認する


 プログラムを書いたら、処理の確認を行いましょう。
トライ&エラーを忘れずに、反復練習のつもりで処理の修正を行いながら、目標となる処理をつくりましょう。


GameManager ゲームオブジェクト インスペクター画像




<Point> 学習内容を振り返って


 実際に処理を考えることはとても大変であったと思います。

 回答例を見ながら処理を記述した場合、その処理の内容がしっかりと理解できるかを確認してください。
理解できているかどうかは、スクリプトの処理の上に日本語でコメントを書いてみることで実力を測ることが出来ます。

 理解が深まっているのであれば、処理の内容をコメントとして残していくことができると思います。

 コメントを書いたものの、まだ不安であったり、あるいは回答例を見てもここまでの処理が難しい場合、
次の手順にはいかず、まずは復習を行い、処理をしっかりと読み解けるようにしましょう。



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

 次は 手順5 −Grid 用のクラスの作成− です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

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

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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