レッスン 6.1 - プロジェクトの最適化

Tutorial

Beginner

+0XP

30 mins

(59)

Unity Technologies

レッスン 6.1 - プロジェクトの最適化

概要:

このレッスンでは、プロジェクトを最適化してパフォーマンスを向上させるための様々なテクニックを学びます。ここで扱う小さなプロトタイププロジェクトでは大きな違いは感じられないかもしれませんが、大きなプロジェクトをエクスポートするとき、特にそのプロジェクトがモバイルやウェブ向けの場合は、パフォーマンスの向上に関するあらゆる要素が非常に重要になってきます。

プロジェクトの成果物:

いくつかのプロトタイププロジェクトがより最適化されます。これは皆さんが独自のプロジェクトに実装するためのサンプルとしても機能します。

Resources

Languages available:

1. 変数の属性

このコースではこれまで、「public」と「private」の変数しか使いませんでしたが、他にも知っておくべき変数の属性が多数あります。
  1. Prototype 1 プロジェクトを開き、PlayerController.cs スクリプトを開きます。
  2. private 属性の行の先頭に [SerializeField] を加えてから、Inspector で値を編集します。
  3. FollowPlayer.cs で、[SerializeField] 属性を Vector3 offset 変数に追加します。
  4. 「readonly」、「const」、「static」属性を適用すると、変数がインスペクター上に表示されなくなることを確認します。

2. Unity のイベント関数

このコースではこれまで、デフォルトの Update() と Start() イベント関数しか使いませんでしたが、他にも状況に応じて使い分けるべきイベント関数があります。
  1. Main Camera を複製し、「Secondary Camera」と名前を変更し、メインカメラを無効にします。
  2. Secondary Camera を一人称視点に再配置し、その位置に合うようにオフセット変数を編集します。
  3. プロジェクトを実行して、まずぎこちなくカメラが動くところを見てみてください。
  4. PlayerController.cs で「Update」を「FixedUpdate」に、FollowPlayer.cs で 「Update」を「LateUpdate」に変更し、再度テストします。
  5. 両方のスクリプトの Start()関数を削除してから、Main Camera を再び有効にします。

3. オブジェクトプーリング

コースを通して、ゲームプレイ中にオブジェクトをインスタンス化したり破壊したりするプロトタイプをたくさん作ってきましたが、オブジェクトプーリングと呼ばれる、よりパフォーマンスの高い、効率的な方法があります。
  1. Prototype 2 を開き、バックアップを作成します。
  2. Object Pooling unity パッケージをダウンロードして、シーンにインポートします。
  3. PlayerController スクリプトをプレイヤーに再アタッチし、DetectCollisions スクリプトを動物のプレハブに再度アタッチします(食べ物のプレハブにはアタッチしません)。
  4. ObjectPooler スクリプトを Spawn Manager にアタッチし、投射物を「Objects To Pool」変数にドラッグし、「Amount To Pool」を 20 に設定します。
  5. プロジェクトを実行して、投射物の有効・無効がどのように切り替わるか観察します。

4. レッスンのまとめ

新しい概念とスキル

  • 最適化
  • シリアライズされたフィールド
  • readonly / const / static / protected
  • イベント関数
  • FixedUpdate()、Update()、LateUpdate() の使い分け
  • Awake() と Start() の使い分け
  • オブジェクトプーリング

Complete this Tutorial