学習記事一覧 · Unity

Unity本格入門 実装編:目次(Chapter 5〜9)

このシリーズは、技術評論社刊『作って学べる Unity本格入門[Unity 6対応版]』(賀好 昭仁 著)の Chapter 5〜9 に沿い、いきのこバトル(IkinokoBattle) の実装コードを読み解きながら学ぶ技術ブログです。
本サイトは出版社・著者の公式サイトではありません。 コード掲載は学習上必要な範囲にとどめます。
OOP設計パターン編(別シリーズ) | 機能別解説編


書籍・著作について

  • 出典: 技術評論社刊『作って学べる Unity本格入門[Unity 6対応版]』(賀好 昭仁 著)
  • 本ブログの位置づけ: 題材プロジェクトのコードを読み解く学習補助の解説です。書籍の代替提供を目的とせず、**コード掲載は学習上必要な範囲(必要最小限)**にとどめます。
  • 著作権・サンプルの利用: 書籍に関する権利は出版社・著者に帰属します。サンプル等の利用条件は書籍記載(P.4〜5)および出版社サポート情報に従ってください。

このシリーズについて

  • 対象読者: Unity と C# のコードを追いながら読み進められる方
  • 記事の構成: 各 Chapter を 1 記事にまとめ、書籍の節(5-1〜)と IkinokoBattle のコードを対応させながら解説します
  • いきのこバトル(IkinokoBattle) は Unity 6.0 対応の 3D アクションゲームです。本シリーズでは書籍の学習項目ごとに「IkinokoBattle ではどう実装されているか」を紐付けて読みます

記事一覧


第1回|Chapter 5 ゲームの舞台を作ってみよう

記事ファイル: 05-IkinokoBattle_ゲームの舞台.md

書籍の 5-1〜5-5 に対応。Terrain ツールによる地形作成から Skybox・昼夜サイクルまでを扱います。IkinokoBattle では RoundLight スクリプトが昼夜サイクルの中核を担っています。

書籍の節との対応

書籍タイトル IkinokoBattle での実装
5-1 プロジェクトを作成しよう Asset Store / Asset のインポート
5-2 地形を追加しよう Terrain(MainScene に配置済み)
5-3 木や草を配置しよう Foliage Creator Tools・Low Poly アセット
5-4 水や風の演出を追加しよう Simple Water Shader・Wind Zone
5-5 空を追加しよう Skybox + RoundLight.cs

学習ポイント

# 学習ポイント
Terrain の作成と基本設定(Size・Resolution)
起伏ブラシ(Raise/Lower・Smooth・Stamp)の使い方
Tree Painter と Detail Mesh で木・草を配置する
Water Shader の配置と Wind Zone の設定
Skybox マテリアルの作成と Lighting Settings への適用
RoundLightDirectional Light を回転させ昼夜を表現する
Terrain のパフォーマンス上の弱点と Static Mesh との使い分け

第2回|Chapter 6 キャラクターを作ってみよう

記事ファイル: 06-IkinokoBattle_キャラクター.md

書籍の 6-1〜6-5 に対応。3D モデルのインポートから Input System・CharacterController・Cinemachine・Mecanim まで扱います。IkinokoBattle の PlayerController.cs が学習の中心です。

書籍の節との対応

書籍タイトル IkinokoBattle での実装
6-1 キャラクターをインポートしよう Query-Chan SD の Import と Prefab 配置
6-2 キャラクターを操作できるようにしよう CharacterController + 重力・移動処理
6-3 キャラクター操作のためのスクリプトを書こう PlayerController.cs・Input Action
6-4 カメラがキャラクターを追いかけるようにしよう Cinemachine Virtual Camera
6-5 キャラクターにアニメーションを付けよう Animator Controller・SetFloat/SetTrigger

学習ポイント

# 学習ポイント
FBX インポートと Rig 設定(Humanoid / Generic)
PlayerInputFindAction で入力アクションを取得する
ReadValue<Vector2>()CharacterController.Move で移動・重力を実装する
WasPressedThisFrame / WasReleasedThisFrame で単発入力を判定する
Cinemachine の CinemachineVirtualCamera でキャラクターを追尾する
Animator Controller のステートマシンとトランジション条件
[RequireComponent] で依存コンポーネントをコードで明示する

第3回|Chapter 7 敵キャラクターを作って動きを付けよう

記事ファイル: 07-IkinokoBattle_敵キャラクター.md

書籍の 7-1〜7-6 に対応。NavMesh・Raycast・アニメーションイベント・スポーンを扱います。EnemyMove.csMobAttack.csCollisionDetector.csSpawner.cs が学習の中心です。

書籍の節との対応

書籍タイトル IkinokoBattle での実装
7-1 敵キャラクターがプレイヤーを追いかけるようにしよう EnemyMove.cs + NavMeshAgent
7-2 一定範囲に入ると襲ってくるようにしよう CollisionDetector.cs(汎用 UnityEvent)
7-3 視界に入ると襲ってくるようにしよう EnemyMove.cs + RaycastNonAlloc
7-4 敵キャラクターに攻撃させてみよう MobAttack.cs + Animation Event
7-5 敵を倒せるようにしよう MobStatus.Damage() + レイヤー設定
7-6 敵キャラクターを出現させよう Spawner.cs + Coroutine + NavMesh.SamplePosition

学習ポイント

# 学習ポイント
NavMesh のベイクと NavMeshAgent のパラメータ
NavMeshAgent.destination でプレイヤーを追跡する
CollisionDetector でトリガー判定を汎用 UnityEvent として委譲する
RaycastNonAlloc で視界内かどうかを確認する
アニメーションイベントと MobAttackOnAttackStartOnHitAttackOnAttackFinished
NavMesh.SamplePosition でランダム位置に敵を Instantiate する
Coroutine(SpawnLoop)でスポーン間隔をコントロールする

第4回|Chapter 8 ユーザーインタフェースを作ってみよう

記事ファイル: 08-IkinokoBattle_UI.md

書籍の 8-1〜8-5 に対応。Canvas・シーン遷移・アイテムデータ・ゲーム内 UI・スマホ対応を扱います。OwnedItemsData.csMenu.csItemsDialog.csLifeGauge.cs が学習の中心です。

書籍の節との対応

書籍タイトル IkinokoBattle での実装
8-1 タイトル画面を作ろう TitleScene + StartButton.csExit.cs
8-2 ゲームオーバー画面を作ろう GameOverScene + GameOverTextAnimator.cs(DOTween)
8-3 アイテムを出現させよう Item.csOwnedItemsData.cs・PlayerPrefs + JSON
8-4 ゲーム画面の UI を作ろう Menu.csItemsDialog.csLifeGauge.cs
8-5 スマホ向けの UI を作ろう MobileOnly.cs・バーチャルパッド

学習ポイント

# 学習ポイント
CanvasRender ModeCanvasScaler で解像度を設定する
Button.onClick.AddListenerSceneManager.LoadScene でシーン遷移する
DOTween で GameOver テキストをアニメーションさせる
JsonUtilityPlayerPrefs でアイテムデータを端末に保存する
Time.timeScale = 0 でポーズ、= 1 で再開する
Instantiate で ItemButton スロットを量産し Toggle と連携する
fillAmountWorldToScreenPoint でライフゲージを 3D キャラに追従させる
MobileOnly でスマホ専用 UI を SetActive で切り替える

第5回|Chapter 9 ゲームが楽しくなる効果を付けよう

記事ファイル: 09-IkinokoBattle_演出.md

書籍の 9-1〜9-3 に対応。BGM・SE・パーティクルエフェクト・ポストプロセスを扱います。AudioManager.csSettingManager.cs が学習の中心です。

書籍の節との対応

書籍タイトル IkinokoBattle での実装
9-1 BGM や SE を追加しよう AudioManager.csSettingManager.cs
9-2 パーティクルエフェクトを作成しよう ヒットエフェクト Prefab + Instantiate
9-3 ゲーム画面にエフェクトをかけてみよう Post Processing(Bloom・Color Grading)

学習ポイント

# 学習ポイント
AudioSourceAudioClip の基本設定(2D / 3D Sound)
AudioMixer のグループと SetFloat で BGM ボリュームを制御する
Resources.LoadAll<AudioClip> で SE を辞書に一括読み込みする
DontDestroyOnLoad でシーンをまたいで AudioManager を存続させる
AudioManager.Instance.Play(clipName) で任意の SE を再生する
Particle System の Shape・Emission・Lifetime を設定してヒットエフェクトを作る
Post Processing Volume の BloomColor Grading でゲーム全体の雰囲気を調整する

各記事と Chapter の対応まとめ

記事 Chapter 中心スクリプト
第1回 Chapter 5 RoundLight.cs
第2回 Chapter 6 PlayerController.cs
第3回 Chapter 7 EnemyMove.csMobAttack.csSpawner.csCollisionDetector.cs
第4回 Chapter 8 OwnedItemsData.csMenu.csItemsDialog.csLifeGauge.cs
第5回 Chapter 9 AudioManager.csSettingManager.cs

関連シリーズ


最終更新:2026年4月