書籍概要

作って学べる開発入門

作って学べる Unity本格入門
[Unity 2023対応版]

著者
発売日
更新日

概要

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

こんな方におすすめ

  • 3Dゲームを作りながらUnity の基本操作を学びたい人

サンプル

目次

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 物理エンジンで遊んでみる
  • 2-4 ゲームを操作してみよう
    • 2-4-1 ゲームを操作するには
    • 2-4-2 旧入力システムと新しいInput System
    • 2-4-3 Input System のインストール
    • 2-4-4 設定ファイルを作成する
    • 2-4-5 ボールを操作してみる
    • 2-4-6 Input Systemはこれだけじゃない

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

  • 3-1 Unityでスクリプトを使おう
    • 3-1-1 スクリプトを作成する
    • 3-1-2 スクリプトをアタッチする
    • 3-1-3 ログを活用する
  • 3-2 データの扱い方について学ぼう
    • 3-2-1 変数
    • 3-2-2 定数
    • 3-2-3 ベクトル型
  • 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 コルーチン
    • 3-9-2 async

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 Terrainで使用するAssetのインポート
  • 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 サンプルプロジェクトの準備とAssetのインポート
    • 6-1-2 3Dモデルのインポート
    • 6-1-3 Prefabを配置する
    • 6-1-4 Shaderを変更して影を付ける
  • 6-2 キャラクターを操作できるようにしよう
    • 6-2-1 入力の取得方法
    • 6-2-2 ゲームオブジェクトの動かし方
  • 6-3 キャラクター操作のためのスクリプトを書こう
    • 6-3-1 Input Actionを準備する
    • 6-3-2 スクリプトの作成
  • 6-4 カメラがキャラクターを追いかけるようにしよう
    • 6-4-1 Cinemachineのインポート
    • 6-4-2 キャラクターを追尾するカメラを配置する
  • 6-5 キャラクターにアニメーションを付けよう
    • 6-5-1 Mecanim(メカニム)とは
    • 6-5-2 アニメーションのインポート
    • 6-5-3 Animator Controllerを作成する
    • 6-5-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-1-6 シーン遷移を実装する
    • 8-1-7 シーンをビルド対象に追加する
  • 8-2 ゲームオーバー画面を作ろう
    • 8-2-1 ゲームオーバー画面シーンの作成
    • 8-2-2 UIに影を付ける
    • 8-2-3 Tweenアニメーションを使う
    • 8-2-4 メイン画面からゲームオーバー画面に遷移させる
  • 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 ライフゲージを追加する
  • 8-5 スマホ向けのUIを作ろう
    • 8-5-1 スマホ向けUIの基本
    • 8-5-2 バーチャルパッドを導入する
    • 8-5-3 スマホの各種センサーを利用する

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-3-7 あえて短いゲームにする
    • 11-3-8 ゲーム内で自分の作品を紹介する
  • 11-4 開発の効率を上げよう
    • 11-4-1 バージョン管理を利用する
    • 11-4-2 自動ビルドを実行する
    • 11-4-3 その他の開発効率化
  • 11-5 Unityの魅力的な機能をさらに知っておこう
    • 11-5-1 XR
    • 11-5-2 Shader
    • 11-5-3 タイムライン
    • 11-5-4 ECS
    • 11-5-5 ML-Agents
    • 11-5-6 AIプラットフォーム
  • 11-6 イベントに参加してみよう
    • 11-6-1 Unityに関連したイベント
    • 11-6-2 Unity Meetup
    • 11-6-3 SYNC
    • 11-6-4 Unity1週間ゲームジャム
    • 11-6-5 その他の勉強会・イベント

Chapter 12 ビジュアルスクリプティングを体験しよう

  • 12-1 ビジュアルスクリプティングについて知ろう
    • 12-1-1 ビジュアルスクリプティングとは
    • 12-1-2 ビジュアルスクリプティングの導入方法
    • 12-1-3 ビジュアルスクリプティングの基礎
  • 12-2 ビジュアルスクリプティングを使ってみよう
    • 12-2-1 作るものを決める
    • 12-2-2 グラフを作ってみる
  • 12-3 ビジュアルスクリプティングのさまざまな機能を知っておこう
    • 12-3-1 Subgraphでノードをまとめる
    • 12-3-2 C#でカスタムノードを作成する
    • 12-3-3 State Graph
  • 12-4 ビジュアルスクリプティングの強みと弱みを知っておこう
    • 12-4-1 ビジュアルスクリプティングの強み
    • 12-4-2 ビジュアルスクリプティングの弱み
    • 12-4-3 まとめ

Chapter 13 Unityでのトラブルシューティング

  • 13-1 エラーを確認しよう
    • 13-1-1 エラーの内容をチェックしよう
    • 13-1-2 よくあるスクリプトエラー
    • 13-1-3 よくわからないエラーが出た場合
    • 13-1-4 調べてもエラーが解決できない場合
  • 13-2 情報を「見える化」しておこう
    • 13-2-1 ログを出力する
    • 13-2-2 ステップ実行
    • 13-2-3 UnityのDebugモードを使う
    • 13-2-4 デバッグ機能を実装する
  • 13-3 処理が実行されない原因を探ろう
    • 13-3-1 関数の呼び出し元をたどっていく
    • 13-3-2 イベント関数の記述ミスを疑う
    • 13-3-3 スクリプトがアタッチされているかチェックする
    • 13-3-4 衝突判定ではトラブルが起こりがち
  • 13-4 スマホゲームのトラブルに備えよう
    • 13-4-1 特定のプラットフォームでのみ画質が悪くなる
    • 13-4-2 クラッシュログを収集する
    • 13-4-3 通信は失敗するものと考える
    • 13-4-4 チーターは必ず現れる
    • 13-4-5 Conditional Compilationを使っている箇所でエラーが出る

サポート

ダウンロード

サンプルファイルについて

(2023年9月27日最終更新)

本書内で使用するサンプルファイルなどは,以下の通りです。使い方については本書P.4~5を参照してください。

ダウンロード
honkaku_unity_2023.zip
本書内で使用するサンプルファイルです。ZIPファイルを解凍して使用してください。
IkinokoBattle_for_Mac.zip(macOS用完成版サンプルゲーム)
ZIPファイルを解凍し,IkinokoBattle.appを実行してください。
IkinokoBattle_for_Windows.zip(Windows用完成版サンプルゲーム)
ZIPファイルを解凍し,IkinokoBattle.exeを実行してください。

補足情報

P.126(5-3-1 木を植える)

(2024年10月9日更新)

Q Select GameObjectダイアログで「PF Conifer Medium BOTD」と検索しても,検索結果に「PF Conifer Medium BOTD」が出てこない
A 最新版BOTDでは,Package Managerでのアセットインポート後にどのレンダーパイプラインに対応するパッケージをインストールするどうかのウインドウが表示されます。 (ウインドウを閉じている場合は,メニューの「Window」→「Forst」→「Install Conifers Package」でウインドウが表示されます)

P126QA.png

ここで「Built in render pipeline」を選択して「Install selected package」ボタンをクリックすれば,Unity 2023で使用するパッケージがインストールされ,検索に引っかかるようになります。

リスト内の解説について

(2023年10月26日更新)

本文中のリスト内に記述されている解説個所は,サンプルコードではコメントとして入っています。リスト内の解説が読みづらいという場合は,サンプルコードをダウンロードし,サンプルコード内のコメントで確認していただくようお願いいたします。

正誤表

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

(2024年10月21日最終更新)

P.332 ページ上部リスト

var volume = audioMixer.GetFloat("BGMVolume");
audioMixer.GetFloat("BGMVolume", out var volume);

(以下2024年3月5日更新)

P.109 図5.4

正しい囲み位置は以下となります。

unity_p109.png

P.232 図7.51タイトル

Quety-Chan-SD
Query-Chan-SD

商品一覧