書籍概要

作って学べる開発入門

作って学べる Unity本格入門

著者
発売日
更新日

概要

本書はUnityでゲーム開発を行いたい人を対象に,1つのゲームを制作する流れを通してUnityの操作が学べる入門解説本です。本書内で武器などを調達し,食べ物を求めながら冒険し,武器でモンスターと戦う3Dアクションゲームを制作していきます。本格的なゲームを実際に制作しながらUnityの使い方を学べますので,楽しみながら学びことができ,かつ実践的なテクニックも身につけることができます。

こんな方におすすめ

  • Unityを使った3Dゲーム開発に興味がある人

サンプル

samplesamplesamplesamplesample

目次

Chapter 1 ゲーム開発を始めよう

1-1 ゲームについて理解しよう

  • 1-1-1 ゲームは数千年前から存在していた
  • 1-1-2 デジタルゲームの登場
  • 1-1-3 ゲーム開発のハードルは高かった

1-2 Unityについて理解しよう

  • 1-2-1 Unityとは
  • 1-2-2 Unityにはどんな機能がある?
  • 1-2-3 Unityは高くて手に入れられない?
  • 1-2-4 Unityの弱点

Chapter 2 Unityの開発環境を構築しよう

2-1 macOSにUnityをインストールしよう

  • 2-1-1 Unity Hubをインストールする
  • 2-1-2 Unityのプラン
  • 2-1-3 Unityをインストールする

2-2 WindowsにUnityをインストールしよう

  • 2-2-1 Unity Hubをインストールする
  • 2-2-2 Unityをインストールする

2-3 Unityを動かしてみよう

  • 2-3-1 プロジェクトを作成する
  • 2-3-2 シーン,ゲームオブジェクト,コンポーネント,Asset
  • 2-3-3 基本的なビューとウインドウ
  • 2-3-4 Sceneビューでの操作方法
  • 2-3-5 ゲームオブジェクトを配置する
  • 2-3-6 カメラを確認する
  • 2-3-7 ゲームを実行する
  • 2-3-8 物理エンジンで遊んでみる

Chapter 3 C#の基本文法を学ぼう

3-1 Unityでスクリプトを使おう

  • 3-1-1 スクリプトを作成する
  • 3-1-2 スクリプトをアタッチする
  • 3-1-3 ログを活用する

3-2 データの扱い方について学ぼう

  • 3-2-1 変数
  • 3-2-2 定数

3-3 クラスとメソッドについて学ぼう

  • 3-3-1 メソッド
  • 3-3-2 クラスとインスタンス

3-4 フィールドとプロパティについて学ぼう

  • 3-4-1 フィールドとプロパティ
  • 3-4-2 アクセス修飾子
  • 3-4-3 クラスを隠蔽する

3-5 演算子について学ぼう

  • 3-5-1 算術演算子
  • 3-5-2 比較演算子
  • 3-5-3 論理演算子
  • 3-5-4 代入演算子
  • 3-5-5 条件演算子

3-6 制御構造について学ぼう

  • 3-6-1 制御構造
  • 3-6-2 if else
  • 3-6-3 for
  • 3-6-4 foreach
  • 3-6-5 while
  • 3-6-6 switch

3-7 クラスの継承について学ぼう

  • 3-7-1 クラスの継承
  • 3-7-2 抽象メソッドとオーバーライド

3-8 Unityのライフサイクルについて学ぼう

  • 3-8-1 Unityのライフサイクル
  • 3-8-2 void Awake()
  • 3-8-3 void Start()
  • 3-8-4 void Update()
  • 3-8-5 void FixedUpdate()
  • 3-8-6 void OnDestroy()
  • 3-8-7 void OnEnabled()
  • 3-8-8 void OnBecameInvisible()

3-9 コルーチンについて学ぼう

  • 3-9-1 コルーチン

Chapter 4 ゲーム企画の基本を学ぼう

4-1 ゲーム開発の罠を知っておこう

  • 4-1-1 ゲーム開発における罠とは
  • 4-1-2 罠にはまるとどうなるか
  • 4-1-3 お蔵入りさせず,どんどん世に出していく
  • 4-1-4 どうやってお蔵入りを回避する?

4-2 ゲームの方向性を決めよう

  • 4-2-1 ゲームの概要を思い浮かべてメモする
  • 4-2-2 ゲームを作る理由を考える

4-3 ゲームのルールを考えよう

  • 4-3-1 スポーツにもゲームにもルールが必要
  • 4-3-2 直感的なルールを作る
  • 4-3-3 サンプルゲームの場合

4-4 ゲームの公開方法を決めよう

  • 4-4-1 プラットフォームの影響
  • 4-4-2 Unityの対応プラットフォーム

4-5 企画書を作ろう

  • 4-5-1 ゲームの企画書
  • 4-5-2 企画書作りのポイント

4-6 ゲームの開発手順を確認しよう

  • 4-6-1 ゲームのコア要素を考えてみる
  • 4-6-2 プロトタイピング
  • 4-6-3 完璧を求めないようにする

Chapter 5 ゲームの舞台を作ってみよう

5-1 プロジェクトを作成しよう

  • 5-1-1 プロジェクトの準備
  • 5-1-2 Asset Storeとは
  • 5-1-3 Standard Assetsのインポート

5-2 地形を追加しよう

  • 5-2-1 Terrainの作成
  • 5-2-2 Terrainの初期設定
  • 5-2-3 地面を上げ下げする
  • 5-2-4 地面の高さを合わせる
  • 5-2-5 地面の高さを平均化する
  • 5-2-6 地面をペイントする

5-3 木や草を配置しよう

  • 5-3-1 木を植える
  • 5-3-2 草を生やす
  • 5-3-3 Terrainの平面サイズと配置

5-4 水や風の演出を追加しよう

  • 5-4-1 水を配置する
  • 5-4-2 風を吹かせる
  • 5-4-3 Terrainの弱点

5-5 空を追加しよう

  • 5-5-1 Skyboxとは
  • 5-5-2 Skybox用Assetのインポート
  • 5-5-3 SkyBoxの基本設定
  • 5-5-4 Skyboxで昼夜を表現する
  • 5-5-5 Lightで昼夜を表現する

Chapter 6 キャラクターを作ってみよう

6-1 キャラクターコントローラのサンプルを見てみよう

  • 6-1-1 FPSController
  • 6-1-2 RollerBall
  • 6-1-3 ThirdPersonController

6-2 キャラクターをインポートしよう

  • 6-2-1 サンプルプロジェクトとAssetのインポート
  • 6-2-2 3Dモデルのインポート
  • 6-2-3 Prefabを配置する
  • 6-2-4 Shaderを変更して影をつける

6-3 キャラクターを操作できるようにしよう

  • 6-3-1 入力の取得方法
  • 6-3-2 ゲームオブジェクトの動かし方

6-4 カメラがキャラクターを追いかけるようにしよう

  • 6-4-1 Cinemachineのインポート
  • 6-4-2 キャラクターを追尾するカメラを配置する

6-5 キャラクター操作のためのスクリプトを書こう

  • 6-5-1 スクリプトの作成
  • 6-5-2 CharacterControllerの接地判定問題を解決する

6-6 キャラクターにアニメーションをつけよう

  • 6-6-1 Mecanim(メカニム)とは
  • 6-6-2 アニメーションのインポート
  • 6-6-3 Animator Controllerを作る
  • 6-6-4 スクリプトからアニメーションを切り替える

Chapter 7 敵キャラクターを作って動きをつけよう

7-1 敵キャラクターがプレイヤーを追いかけるようにしよう

  • 7-1-1 敵キャラクターのインポート
  • 7-1-2 追いかけるのは意外と難しい
  • 7-1-3 NavMeshの仕組み
  • 7-1-4 NavMeshをベイクする
  • 7-1-5 敵キャラクターにプレイヤーを追跡させる

7-2 一定範囲に入ると襲ってくるようにしよう

  • 7-2-1 オブジェクトにタグをつける
  • 7-2-2 検知のためのColliderをセットする
  • 7-2-3 衝突検知用の汎用スクリプトを作る

7-3 視界に入ると襲ってくるようにしよう

  • 7-3-1 Raycastとは
  • 7-3-2 敵キャラクターからプレイヤーにRaycastする
  • 7-3-3 障害物を設定する

7-4 敵キャラクターに攻撃させてみよう

  • 7-4-1 アニメーションの設定
  • 7-4-2 スクリプトを書く
  • 7-4-3 アニメーションにスクリプトの実行イベントを仕込もう

7-5 敵を倒せるようにしよう

  • 7-5-1 武器をインポートする
  • 7-5-2 攻撃の当たり判定を配置する
  • 7-5-3 スクリプトのアタッチ
  • 7-5-4 武器と敵のレイヤー設定
  • 7-5-5 プレイヤーのアニメーション設定

7-6 敵キャラクターを出現させよう

  • 7-6-1 敵キャラクター登場の基本
  • 7-6-2 敵キャラクターをPrefab化する
  • 7-6-3 Prefabの特徴を知っておく
  • 7-6-4 Coroutineを使う
  • 7-6-5 スクリプトを書く

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

8-1 タイトル画面を作ろう

  • 8-1-1 新規シーンの作成
  • 8-1-2 Canvasとは
  • 8-1-3 Canvasの解像度を設定する
  • 8-1-4 タイトルの文字を配置する
  • 8-1-5 ボタンを配置する

8-2 ゲームオーバー画面を作ろう

  • 8-2-1 ゲームオーバー画面シーンの作成
  • 8-2-2 UIに影をつける
  • 8-2-3 Tweenアニメーションを使う
  • 8-2-4 MainSceneからGameOverSceneに遷移させる

8-3 アイテムを出現させよう

  • 8-3-1 アイテムのスクリプトを書く
  • 8-3-2 アイテムのPrefabを準備する
  • 8-3-3 敵を倒すとアイテムを出現させる
  • 8-3-4 JSONを利用してデータを保存する

8-4 ゲーム画面のUIを作ろう

  • 8-4-1 メニューを追加する
  • 8-4-2 ポーズ機能の実装
  • 8-4-3 アイテム欄の実装
  • 8-4-4 ライフゲージを追加する

Chapter 9 ゲームが楽しくなる効果をつけよう

9-1 BGMやSEを追加しよう

  • 9-1-1 Unityで再生可能な音声ファイル
  • 9-1-2 Audio Clipのプロパティ
  • 9-1-3 Audio Sourceを使用する
  • 9-1-4 Audio Mixerを使用する
  • 9-1-5 2Dサウンドを管理するクラスを作る

9-2 パーティクルエフェクトを作成しよう

  • 9-2-1 パーティクルエフェクトとは
  • 9-2-2 攻撃がヒットしたときのエフェクトの作成
  • 9-2-3 エフェクトの実装
  • 9-2-4 Assetを活用する

9-3 ゲーム画面にエフェクトをかけてみよう

  • 9-3-1 Post Processingのインストール
  • 9-3-2 カメラの準備
  • 9-3-3 エフェクトをつける

Chapter 10 ゲームのチューニングを行おう

10-1 パフォーマンスを改善しよう

  • 10-1-1 フレームレートを設定する
  • 10-1-2 Profilerでパフォーマンスを計測する
  • 10-1-3 Scriptのチューニング
  • 10-1-4 Renderingのチューニング

10-2 ゲームの容量を節約しよう

  • 10-2-1 ゲームのファイルサイズに注意
  • 10-2-2 肥大化の原因と基本的な対策
  • 10-2-3 画像のサイズを減らす
  • 10-2-4 音声ファイルのサイズを減らす
  • 10-2-5 Resourcesの中身を減らす
  • 10-2-6 不要なシーンをビルド対象から外す
  • 10-2-7 AssetBundle

10-3 ゲームをビルドしよう

  • 10-3-1 ビルドの共通操作と設定
  • 10-3-2 Windows/macOS向けのビルド
  • 10-3-3 Android向けのビルド
  • 10-3-4 iOS向けのビルド
  • 10-3-5 WebGL向けのビルド
  • 10-3-6 ビルドしたいプラットフォームが選べない場合

10-4 ゲームを公開しよう

  • 10-4-1 Google Play
  • 10-4-2 App Store
  • 10-4-3 Steam
  • 10-4-4 UDP(Unity Distribution Portal)

Chapter 11 プレイされるゲームにしていこう

11-1 ゲームをもっと面白くしよう

  • 11-1-1 レベルデザイン
  • 11-1-2 遊びの4要素
  • 11-1-3 プレイの動機を提供する

11-2 ゲームを収益化しよう

  • 11-2-1 ゲーム収益化は開発者の悩みのタネ
  • 11-2-2 広告について知っておく
  • 11-2-3 アプリ内課金について知っておく

11-3 ゲームをもっと広めよう

  • 11-3-1 プレスリリースを送る
  • 11-3-2 SNSを使う
  • 11-3-3 シェア機能を実装する
  • 11-3-4 プロモーションに使えるサービスを活用する
  • 11-3-5 広告を出す
  • 11-3-6 リピート率を向上させる

11-4 開発の効率を上げよう

  • 11-4-1 バージョン管理を利用する
  • 11-4-2 自動ビルドを実行する
  • 11-4-3 その他の開発効率化

11-5 Unityの魅力的な機能をさらに知っておこう

  • 11-5-1 VR/AR
  • 11-5-2 Shader
  • 11-5-3 タイムライン
  • 11-5-4 ECS

11-6 イベントに参加してみよう

  • 11-6-1 Unityに関連したイベント
  • 11-6-2 Unity Meetup
  • 11-6-3 Unity1週間ゲームジャム
  • 11-6-4 その他の勉強会・イベント

サポート

補足情報

本書で使用するサンプルファイルについて

(2020年1月14日更新)

本書で使用するサンプルファイルは、筆者による本書サポートサイトで公開されています。ファイルの詳細については、本書P.339を参照してください。

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2020年5月2日最終更新)

P.183 リスト7.5(見出し番号:7-4-2)


status = GetComponent();


赤文字(意味:この行を追加、参照:P.5「本書の使い方」)

(以下2020年4月2日更新)

P.92 シーン名について

シーン名を「MainScene」に設定していますが,以降の画面で「SampleScene」となっている場合がありますが,操作手順には影響はありません。

P.141 下から7行目

以下のページ以下のページ
以下のページ

P.148 下から1行目

移し続ける
映し続ける

P.154 コラム下から3行目

General
Generic

(以下2020年2月4日更新)

P.46 図2.37(見出し番号:2-3-8)

設定するTilingはMain Mapsの下のTilingとなります。以下の図を参照してください。

P.177 下から2行目(見出し番号:7-3-3)

「Bake」ボタンをクリクして
「Bake」ボタンをクリックして

P.189 下から2行目(見出し番号:7-4-3)

Slime_Level_1Slime_Level_1の中身を見ると
Slime_Level_1の中身を見ると

P.198 下から10行目(見出し番号:7-5-2)

Is Triggerのチェックも外します。
Is Triggerにチェックします。

P.205 下から5行目(見出し番号:7-6-2)

作成したPrefabフォルダ
作成したPrefabsフォルダ

P.219 上から4行目(見出し番号:8-1-4)

Inspectorウインドウを下にスクロール
Font Asset Creatorウインドウを下にスクロール

P.227 上から1行目(見出し番号:8-2-2)

HierarchyウインドウでTextを選択し、
HierarchyウインドウでGameOverを選択し、

P.231 上から3行目(見出し番号:8-2-3)

GameOverTextAnimation.cs
GameOverTextAnimator.cs

P.246 下から6行目(見出し番号:8-4-1)

buttom、left
bottom、left

P.257 下から9行目(見出し番号:8-4-4)

Rect TransformコンポーネントのImage Typeを
ImageコンポーネントのImage Typeを

P.266 リスト9.1のタイトル(見出し番号:9-1-3)

音を鳴らすスクリプト(PlayerAttack.cs)
音を鳴らすスクリプト(MobAttack.cs)

P.267 上から2行目(見出し番号:9-1-3)

PlayerAttackコンポーネントのSwing Sound
MobAttackコンポーネントのSwing Sound

P.267 上から7行目(見出し番号:9-1-4)

Audio Sourceのの出力先
Audio Source出力先

P.269 下から7行目,6行目(見出し番号:9-1-4)

Audio Manager
Audio Mixer

P.283 上から16行目(見出し番号:9-3-3)

Hierarchyウインドウで「Assets」
Projectウインドウで「Assets」

P.283 下から13行目(見出し番号:9-3-3)

作成された「Main Scene Profile」
作成された「Main Camera Profile」

P.288 上から9行目(見出し番号:10-1-2)

性能が低いのデバイスでは
性能が低いデバイスでは

(以下2020年1月23日更新)

P.55 List型の例(見出し番号:3-2-1)


Debug.Log(values[values.Length - 1]);


Debug.Log(values[values.Count - 1]);

(以下2020年1月14日更新)

P.5 サポートページURL(見出し番号:「本書の使い方」)

https://gihyo.jp/book/2019/978-4-297-10681-2/support
https://gihyo.jp/book/2020/978-4-297-10973-8/support

商品一覧