書籍概要

WEB+DB PRESS plus

ステップアップUnity
──プロが教える現場の教科書

著者
発売日
更新日

概要

現場の第一線で活躍するプロフェッショナルが,Unityによるゲーム作成のノウハウをまとめました。Part1で約70ページにわたってシンプルな3Dゲーム作成の基本を解説したのち,モバイルAR,UI実装,Editor拡張,負荷削減,絵作り,AIについてのノウハウを紹介します。どれも,ゲームを形にするだけでなく,製品レベルのものに仕上げるためには必須の知識です。各Partは独立しているので,気になる個所,知りたい個所から読み進められます。より効率的に,より高品質なゲーム作成に取り組みたい方にお勧めします。

こんな方におすすめ

  • Unityで製品レベルのゲームを作りたい方
  • より高品質なゲームを,より効率的に作りたい方

著者から一言

近年,Unityはゲーム開発ツールとしてポピュラーなものになっています。無料版でも充実した機能が扱え,対応プラットフォームも多く,おもな開発言語が比較的理解しやすいC# であることから,プロ・アマ問わず広く利用され,Unityで開発されたタイトルは市場でも非常に多いです。
そのため,多くのノウハウがネット上でも手に入ります。C# の基本的な知識さえあれば,記事を読んだりコミュニティへ質問したりすることで,簡単なゲームを形にすることもできるでしょう。
しかし,ゲームを形にするだけでなく,製品レベルのものに仕上げることを目指すとなると,メニューなどを充実させるUI 機能,ビジュアルの調整や動作の軽量化,コンテンツの量産効率を上げるエディタ拡張など,さまざまな周辺知識が必要になります。
本書では,Part1でシンプルな3D ゲーム,Part2で現在トレンドのAR を用いたゲームの作成について解説し,以降はゲーム開発・運営をしているエンジニアが現場で培った技術をPartごとにまとめています。また,最後にUnityにおけるAI についても解説します。Partごと完結する内容で,順を追って読み進める必要はないため,興味がある個所や,今必要な技術について記述してある個所からお読みいただける構成になっています。
ぜひ,本書を通じてより高度なUnityの扱いを学習し,高品質な製品開発を意識した効率的な開発をしていただけるようになれば幸いです。(「はじめに」より)

サンプル

samplesamplesamplesamplesample

目次

Part1 Unityでシンプル3Dゲーム作成
第1章 Unityのインストールとプロジェクトの作成

  • Unityの概要
  • インストール
  • プロジェクトの作成

第2章 画面説明と基本操作

  • Unity内の各画面の説明
  • 基本操作
  • 今回作るゲームの説明

第3章 3Dを配置しよう

  • シーンの作成
  • ステージの配置
  • 3Dのキャラクターの配置31

第4章 3Dキャラクターを操作しよう

  • スクリプトの作成
  • 移動の実装
  • 回転の実装
  • ユニティちゃんへのモーションの流し込み

第5章 UI を配置しよう

  • Canvasの作成と設定
  • 画像の追加と設定
  • クリア画像の配置
  • 残りのチョコレート数の配置
  • 「もう一度」ボタンの配置

第6章 ゲームシステムを実装しよう①

  • アイテムのPrefabの作成
  • アイテムの配置
  • アイテムの取得
  • アイテムの残数テキストの更新

第7章 ゲームシステムを実装しよう②

  • 終了処理の実装
  • 終了時に決めポーズを取らせる

第8章 エフェクトで画面を盛り上げよう

  • エフェクトの作成と配置
  • スクリプトによるエフェクトの操作

第9章 操作に合わせて音を鳴らそう

  • サウンドシステムの説明
  • SEの実装
  • ボイスの実装
  • BGMの実装

第10章 ゲームのビルドと実行をしよう

  • ゲームのビルド
  • ゲームの実行
  • 最後に

Part2 モバイルAR 開発の実践
第1章 AR の概略と環境構築

  • AR とは
  • 開発環境
  • ARFoundationを使ってAR 環境を構築

第2章 モバイル端末(実機)でアプリを動かす

  • ビルド用モジュールのインストール
  • iOS・Android共通のビルド設定
  • Xcodeを用いて実機(iOS端末)にインストール
  • Android端末にアプリをインストール

第3章 AR ゲームを作ってみよう

  • ゲームの概要
  • プラットフォーム依存コンパイル
  • 平面に物体を置いてみる
  • ゴール設置
  • ボールを投げて地面で弾ませる
  • ゴールリングでボールを弾く

第4章 AR ゲームを盛り上げてみよう

  • ゲームとして仕上げる
  • 得点を表示する
  • エフェクトを付ける
  • 得点時にアニメーションを再生する

Part3 現場で使えるUI 実装
第1章 uGUI入門

  • はじめに
  • UI 表示の基礎
  • RectTransform ──オブジェクトの位置調整
  • 深度制御──重なり順

第2章 uGUIを便利に使う

  • はじめに
  • ボタン── Buttonの機能拡張
  • ドラッグ& ドロップ── uGUIにない機能の作成
  • スクロール── Scroll Rectの機能拡張
  • まとめ

第3章 DOTweenでアニメーションを付ける

  • DOTweenの概要
  • 移動
  • 拡縮
  • 変色
  • 回転
  • そのほかの値の操作
  • Sequence
  • まとめ

Part4 Editor拡張で開発効率化
第1章 Editor拡張とは

  • はじめに
  • より効率的に開発をするには
  • Editor拡張とは
  • GUILayoutとEditorGUILayout
  • このPartのゴール

第2章 インスペクタを拡張して情報を見やすく

  • Attributeとは
  • Unity C# で用意されているAttribute
  • Attributeを自作する

第3章 Editor拡張によるリソース整理の自動化

  • Unityのアセット管理方法
  • ウィンドウの作成と右クリックからの起動
  • 選択したオブジェクトの取得
  • 参照されているAssetを探す
  • GUID の比較
  • 結果の表示

第4章 Editor拡張によるC# リファクタリング

  • 目指すところ
  • メニューに追加
  • すべてのPrefabの中を精査し,メソッド情報を確保
  • 該当のメソッドを持つもののみ抽出
  • まとめ

Part5 Unityアプリの負荷削減
第1章 基準とする端末の選定

  • 基準とする端末の選び方
  • スペックの確認と比較

第2章 負荷測定

  • FPS ──処理速度の目安
  • 負荷の原因のジャンル分け
  • ジャンル別の処理時間計測
  • 実機での処理時間計測
  • FPS が低下した場合

第3章 CPU負荷削減

  • 重い処理を探す
  • GetComponentの呼び出し
  • 距離やベクトルの長さの計算
  • Animatorコンポーネント
  • 画面内に映らないオブジェクト
  • FBXのOptimize
  • Physics.Raycast
  • ログの出力
  • ガベージコレクション

第4章 GPU負荷削減

  • 解像度の最適化
  • ライトと影の設定
  • ドローコールを減らす
  • より細かい負荷削減
  • 負荷軽減をしても目標FPS に満たない場合
  • まとめ

Part6 3Dゲームのための絵作り
第1章 Unityにおける絵作り

  • Unityにおける絵作りとは
  • 絵作りを行うための主な要素

第2章 材質の設定

  • Unityにおける材質の絵作りとマテリアル
  • マテリアルとシェーダー
  • マテリアルの作り方
  • マテリアルのパラメータと効果
  • そのほかの設定項目

第3章 直接光の設定

  • Unityにおける光源とLight
  • Lightの作り方
  • Lightの種類や活用法

第4章 間接光の設定

  • Unityにおける間接光
  • Skybox
  • 環境光の設定

第5章 影の設定

  • Unityにおける影の表現
  • Quality Settings
  • コンポーネントごとの影の設定
  • まとめ

UnityにおけるAI

  • ゲームAI の基本
  • NavMeshを使った経路探索
  • ビヘイビアツリーによるキャラクターの意思決定
  • Unityで機械学習を行うライブラリ「ML-Agents」

サポート

ダウンロード

(2021年2月16日更新)

本書掲載のサンプルファイルを以下よりダウンロードできます。ダウンロード後,解凍してご利用下さい。

ダウンロード
step_up_unity.zip

正誤表

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

(2021年3月23日最終更新)

P.182 右段 4行目

Every V Blank= 0FPS
Every V Blank= 60FPS

(以下2021年3月3日更新)

P.113 左段 スクリプト 「// ボールを生成するメソッド」の10行目

+       var go = Instantiate(
+           ballPrefab, worldPosition,
+           Quaternion.identity);

+       var ballPrefab =
+           Camera.main.transform.forward.normalized;
+       var go = Instantiate(
+           ballPrefab, worldPosition,
+           Quaternion.identity);

+       var rotation =
+           Camera.main.transform.forward.normalized;

商品一覧