Unityに関連する記事です

設計に基づいて実装していく手順を考える

 

<発展編>


 発展編はすべて Main シーンで実装を行っていきます。
ゲームシーンが複数ある場合には、それらのシーンごとに実装していく順番を考えましょう。


<関連処理を1つのクラスにまとめる>


発展1 −UI関連処理の統合−
 1.UIManager スクリプトを修正し、耐久力ゲージの制御処理を追加する
 2.DefenseBase スクリプトの耐久力ゲージの更新処理を修正し、UIManager スクリプトに用意したメソッドを呼び出す処理に変更する


<データベースの作成と活用 


発展2 −エネミー用のデータベース作成−
 3.エネミー用のデータベースとして利用するスクリプタブル・オブジェクトを作成する準備を行う −EnemyType スクリプトと EnemyDataSO スクリプトを作成するー
 4.EnemyDataSO スクリプトを利用して EnemyDataSO スクリプタブル・オブジェクトを作成し、エネミーのデータを登録する



発展3 −エネミー用のデータベースの利用−
 5.EnemyController スクリプトを修正し、EnemyDataSO スクリプタブル・オブジェクトのデータを参照して反映する処理を追加する
 6.EnemyGenerator スクリプトを修正し、エネミー用のプレファブに EnemyDataSO スクリプタブル・オブジェクトのデータを参照して、1つのプレファブから異なるエネミーを自動生成する処理を追加する



発展4 −エネミーのデータを外部のスクリプトで参照する処理の実装−
 7.DefenseBase スクリプトを修正して、EnemyData の攻撃力を参照して拠点の耐久力の値を減算する処理に変更する
 8.EnemyController スクリプトを修正し、不要な変数を削除する


<スクリプトによるUIの制御◆


発展5 −Exp の設定追加と Exp 表示用のゲームオブジェクトの作成−
 9.EnemyDataSO スクリプトを修正して、EnemyData クラスに Exp 用の変数を追加して、EnemyDataSO スクリプタブル・オブジェクトに設定する
10.Canvas内の TopUI ゲームオブジェクトの子オブジェクトとして、Exp の表示更新を行う ExpSet ゲームオブジェクト群を作成する


<シングルトンクラスの作成と活用>


発展6 −GameData の作成、Exp 獲得処理と Exp 表示更新処理の実装−
11.GameData スクリプトを作成し、Exp の値を更新するための変数とメソッドを用意する
12.UIManager スクリプト、EnemyGenerator スクリプト、EnemyController スクリプトを順番に修正して、エネミーが破壊された際に Exp の値を加算する処理と、Exp の表示を更新する一連の処理を追加する



発展7 −GameData の活用−
13.GameData スクリプトを修正し、耐久力やエネミーの生成数などのゲームの設定関連の値を、このスクリプトに集約して設定し、各スクリプトから参照する制御処理を追加する
14.DefenseBase スクリプトと EnemyGenerator スクリプトを修正し、GameData スクリプトから設定された値を受け取ってゲームに反映する方法に変更する


<エネミーの機能追加>


発展8 −エネミーの移動方法を追加−
15.エネミーの移動方法の種類を MoveType 型の enum として作成する 
16.EnemyDataSO スクリプトを修正して、MoveType を追加し、EnemyDataSO スクリプタブル・オブジェクトの設定を行う



発展9 −エネミーの移動方法に合わせた移動処理の実装 
17.EnemyController スクリプトを修正し、エネミーの種類に応じた移動方法を作成し、制御を追加する  篠梢福
18.EnemyController スクリプトを修正し、エネミーの種類に応じた移動方法を作成し、制御を追加する◆ 室惺圈



発展10 −エネミーの移動方法に合わせた移動処理の実装◆
19.EnemyController スクリプトを修正し、エネミーの種類に応じた移動方法を作成し、制御を追加する ーボス・水平移動 
20.EnemyController スクリプトを修正し、エネミーの種類に応じた移動方法を作成し、制御を追加するぁ 璽椒后水平移動◆



発展11 −エネミーの移動用のスクリプタブル・オブジェクトの作成と運用−
21.エネミーの移動用の MoveEventSO スクリプタブル・オブジェクトを作成する(EnemyGenerator の修正)
22.エネミーの移動方法に応じて MoveEventSO スクリプタブル・オブジェクトに用意されたメソッドを UnityAction に登録して移動を実行する(EnemyController の修正)



発展12 ーエネミー用のバレットの作成と自動生成処理の実装−
23.エネミー用のバレットを作成してプレファブにする
24.エネミーの種類に応じて、バレットを自動生成を行う処理を実装する(EnemyController の修正)



発展13 ーバレット関連の追加処理の実装−
25.エネミー用のバレットが拠点に侵入した際に耐久力を減算する処理を追加する(DefenseBase の修正)
26.エネミーのバレットの発射する方向を真っすぐ下方向から、プレイヤーのいる方向へ発射するように修正する(GameManager、EnemyGenerator、EnemyController の修正)
27.ボスもバレットを発射できるようにする(EnemyController の修正)



発展14 −Listの作成と活用−
28.EnemyGenerator スクリプトを修正し、生成したエネミーの情報をリストで管理する処理を追加する => クラスインスタンスに変更する
29.GameManager スクリプトを修正し、ゲーム終了判定に伴い、画面に残っているエネミーとエネミーのバレットをすべて破壊する制御を追加する


<演出の追加◆


発展15 ーフロート表示の作成ー
30.フロート表示用のゲームオブジェクトを作成する
31.FloatingMessage スクリプトを作成する。処理に応じて色を変える



発展16 ーフロート表示の実装ー
32.EnemyController スクリプトを修正して、プレイヤーのバレットとエネミーの接触時に、バレットの攻撃力分のフロート表示を生成する
33.DefenseBase スクリプトを修正して、拠点とエネミーの接触時に、エネミーの攻撃力分のフロート表示を生成する
34.UIManager スクリプトと EnemyGenerator スクリプトを修正して、Exp の値を加算する際に、加算する Exp 分のフロート表示を生成する


<バレットボタンの自動生成>


発展17 ーバレット用のボタンの作成ー
35.Canvas内の BottomUI ゲームオブジェクトの子オブジェクトとして BulletSelestSet ゲームオブジェクトを作成する
36.BulletSelestSet ゲームオブジェクトの子オブジェクトとして、btnBulletSelect ゲームオブジェクト群を作成する。4つ並べて大きさを確認する



発展18 ーバレット用のボタンの自動生成ー
37.BulletSelectDetail スクリプトを作成する
38.BulletSelectManager スクリプトを作成し、btnBulletSelect ゲームオブジェクトを自動生成する処理を追加する



発展19 ー世界観に合わせたゲーム素材の選定ー
39.ゲームの世界観について設計する
40.世界観に合わせたバレットの画像とバレット選択用のボタンの画像を用意する


<データベースの作成と活用◆


発展20 ーバレット用のデータベース作成ー
41.BulletDataSO スクリプトを作成する
42.BulletDataSO スクリプトを利用して BulletDataSO スクリプタブル・オブジェクトを作成し、バレットのデータを登録する



発展21 ーバレット用のデータベースの利用 
43.Bullet スクリプトを修正し、BulletDataSO スクリプタブル・オブジェクトのデータを参照して反映する処理を追加する
44.GameData スクリプト、BulletSelectManager スクリプト、PlayerController スクリプトを修正し、バレット用のプレファブに BulletDataSO スクリプタブル・オブジェクトのデータを参照して設定を反映する


<バレットの切り替え機能の実装>


発展22 −バレット用のデータベースの利用◆
45.BulletDataSO スクリプタブル・オブジェクトにバレットのデータを追加する
46.BulletSelectDetail スクリプトと、BulletSelectManager スクリプトを修正し、バレット選択ボタン用のプレファブに BulletDataSO スクリプタブル・オブジェクトのデータを参照して、1つのプレファブから異なるバレット選択ボタンを自動生成する処理を追加する(バレットの切り替えも追加)


<バレット選択ボタンの制御の追加>


発展23 −バレット用の発射時間の制御−
47.BulletSelectDetail スクリプトを修正し、ボタンを押したときに、発射できる時間の残り時間に合わせてゲージが連動する処理を追加する
48.BulletSelectDetail スクリプトを修正し、初期バレットのボタンは残り時間に関係なく発射できるようにする処理を追加する



発展24 −バレット用の発射時間のボタン間の連動−
49.BulletSelectManager スクリプトと、BulletSelectDetail スクリプトを修正し、バレット間の繋がりを作る。バレット選択ボタンを押したら、他のボタンに制御をかける(ゲージが一時停止する)制御を追加する
50.BulletSelectManager スクリプトと、BulletSelectDetail スクリプトを修正し、バレット間の繋がりを作る。バレットの発射残り時間がなくなったときに強制的に初期バレットに戻し、発射時間を初期値に戻す制御を追加する



発展25 −バレット選択用ボタンのコストによる制御−
51.BulletSelectDetail スクリプトを修正し、バレットごとの必要なコストの値を表示する
52.BulletSelectDetail スクリプトを修正し、ボタンのオン・オフの切り替え制御と、初期バレットのボタン以外はオフにする制御を追加する



発展26 −バレット選択用ボタンのコストと Exp の現在値による、ボタンのオン・オフ制御の連動−
53.BulletSelectManager スクリプト、GameManager スクリプト、EnemyGenerator スクリプトを修正し、Exp の値が更新されるたびに、バレットのコストを確認し、ボタンが押せるようになるか判定を行い、ボタンの制御を行う



発展27 −バレット選択用ボタンのコストの支払い処理とボタンのオン・オフ制御の連動−
54.BulletSelectManager スクリプト、BulletSelectDetail スクリプトを修正し、バレット選択ボタンを押した際にコストとして Exp の値を更新し、バレットのコストを確認し、ボタンが押せるようになるか判定を行い、ボタンの制御を行う



発展28 −バレットの種類による性能変更の追加−
55.PlayerController スクリプトを修正し、バレットの種類に合わせて、1方向、3方向、5方向の弾道で生成する処理を追加する
56.EnemyController スクリプトと Bullet スクリプトを修正し、貫通するバレット、自動追尾するバレットの処理を追加する


<演出の追加>


発展29 −ゲームクリア演出の追加 
57.アセットを加工し、花火のエフェクトを作成してプレファブにする
58.GameManager スクリプトを修正し、ゲームクリアの状態になった際に、花火のエフェクトをランダムな位置に、ランダムな数だけ生成する処理を追加する



発展30 −ゲームクリア演出の追加◆
59.UIManager スクリプトを修正し、ゲームクリアのロゴのアニメ演出を追加する
60.UIManager スクリプトを修正し、追加のゲームクリアのロゴのアニメ演出と、リスタートのロゴのループアニメ演出を追加する



発展31 −ゲームスタート演出の追加−
61.Canvas内に OpeningSet ゲームオブジェクト群を作成する
62.ゲームを開始すると暗転していた画面が徐々に見えるようになり、ロゴがジャンプして画面内に入ってくる演出を作成する(UIManager スクリプト、GameManager スクリプト、EnemyGenerator スクリプト)



発展32 −ボス出現時の警告演出の追加−
63.Canvas内に BossAlertSet ゲームオブジェクト群を作成する
64.ボスの出現前に警告の演出を追加する(UIManager スクリプト、GameManager スクリプト、EnemyGenerator スクリプト)


<属性要素の追加と運用>


発展33 −属性の追加−
65.ElementType スクリプトと ElementDataSO スクリプトを作成する。ElementDataSO スクリプタブル・オブジェクトを作成し、設定を行う
66.各スクリプタブル・オブジェクト用のスクリプトを修正し、ElementType 型の属性情報を追加する。その後、スクリプタブル・オブジェクトの設定を行う(EnemyDataSO スクリプト、BulletDataSO スクリプト)
67.ElementCompatibilityHelper スクリプトを作成し、属性による相性の判定を行う機能を追加する



発展34 −属性の要素の運用−
68.GameData スクリプトと、EnemyController スクリプトを修正し、バレットの持つ属性情報と、エネミーの持つ属性情報を ElementCompatibilityHelper スクリプトを利用して相性判定し、相性が良い場合には与えるダメージを増やすようにする
69.DefenseBase スクリプトを修正し、選択しているバレットの属性情報とエネミーやエネミーのバレットの持つ属性情報を ElementCompatibilityHelper スクリプトを利用して相性判定し、相性が良い場合には受けるダメージを増やすようにする



発展35 −フロート表示に属性の要素の運用−
70.FloatingMessage スクリプトを修正し、属性間の相性が弱点である場合には、フロート表示のサイズを大きくする制御を追加する
71.EnemyContorlller スクリプトと DefenseBase スクリプトを修正し、属性間の相性が弱点である場合のフロート表示を大きくする処理を実行する制御を追加する



発展36 −バレット選択ボタンに属性の情報を反映−
72.BulletSelectManager スクリプトを修正し、ElementDataSO スクリプタブル・オブジェクトを利用できる状態にする。バレットのデータからプレイヤーの利用できる BulletData の情報だけを抽出して利用できるようにする
73.BulletSelectDetail スクリプトを修正し、バレットのデータから属性の背景画像を設定する


<エネミーのバレットにもデータベースを利用する>


発展37 −エネミーのバレット処理の修正−
74.BulletDataSO スクリプタブル・オブジェクトを修正し、エネミー用のバレットのデータを追加する
75.EnemyContorlller スクリプトと、 BulletSelectManager スクリプトと、EnemyGenerator スクリプトを修正し、エネミーの発射するバレットにも BulletData の情報を利用できるようにする


<BGMとSEの追加>


発展38 −BGMの準備−
76.BGM用のオーディオファイルをダウンロードしてUnityにインポートする
77.オーディオ用のデータベースとして利用するスクリプタブル・オブジェクトを作成する準備を行う −SoundDataSO スクリプトを作成するー
78.SoundDataSO スクリプトを利用して SoundDataSO スクリプタブル・オブジェクトを作成し、オーディオのデータを登録する



発展39 −BGMの再生−
79.SoundManager ゲームオブジェクトと、SoundManager スクリプトを作成する
80.GameManager スクリプトと UIManager スクリプトを修正して、SoundManager スクリプトを使って、場面に合わせてBGMを自動的に切り替える制御処理を実装する



発展40 −SEの再生−
81.SE 用のオーディオファイルをインポートし、SoundDataSO スクリプトを修正して、SE 用のオーディオデータを登録する
82.SoundManager スクリプトを修正し、SE 用の再生・停止処理を追加する
83.適宜なタイミングに合わせて SE を再生する処理を実装する



発展41 −ボイスの再生−
84.ボイス用のオーディオファイルをインポートし、SoundDataSO スクリプトを修正して、ボイス用のオーディオデータを登録する
85.SoundManager スクリプトを修正し、ボイス用の再生・停止処理を追加する
86.適宜なタイミングに合わせてボイスを再生する処理を実装する



学習の振り返り


 以上のような実装工程を行います。

 次は 発展1 −UI関連処理の統合− です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

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

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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