本記事の内容
・Unityを使うために知っておくべきTIPS集
・エディタ関連の効率化TIPS
・インスペクタを使いやすくするTIPS
・デバッグ効率化TIPS
・プラグインで効率化
これらのTIPS、使ってないとヤバイです
開発効率を上げよう!
みなさん、ゲーム開発していますか?
ゲーム開発というのは、ゲームを開発したことがない人が想像する10倍はタスクがありますよね。
少しでも時間を節約して、ゲームをもっと沢山開発したり、ゲームをプレイする時間に費やしたいですよね。
今回は、開発効率をUPするためのUnityのTIPSを紹介します。役に立つものがあったら、ぜひシェアしてください!
コンパイル・エディタ全般系
Play Enter Mode
ゲーム開発が進んでいくにつれ、Playボタンを押してからゲームに移るまで、結構な時間が掛かりますよね。
これを爆速にする方法があります。
編集 > プロジェクト設定 > エディタ を選択します。
そして、 再生モード開始時設定(Play Enter Mode)にチェックを入れてください。

これだけで、Playモードが爆速になります。
私のシンプルなプロジェクトで比較した場合以下の通りでした。スクリプトのほとんどないシーンなので、本当に一瞬で起動します。
Play Enter Mode | 起動までの時間 |
---|---|
ON | 0.2秒 |
OFF | 3.2秒 |
Playモードへの移行とPlayモードから戻る時、両方とも早くなるので、何も出来ない待機時間が減らせます。

デメリットとしては、saticフィールドの初期化が行われなくなったりするらしいですが、正直ほとんどのケースで影響はないでしょう。
(Unity公式でも解説されてます)
また、少し値段はするのですが、HotReloadというアセットもあります。
こちらのアセットを導入すると、Playモード中でもスクリプトの変更が即座に適用されるようになります。
よくセールをやっているので、セール時を狙って購入するのがオススメ。
詳しくは以下の関連記事で解説しています。

Playモード中かどうかを一目で分かるようにする
Unityを使い始めたての頃によくやったミスで、Playモード中と気づかずインスペクタの値を変更し、変更が反映されていない!となったことがある人は多いと思います。
なので、Playモード中はエディタの色を変更するといったことが可能です。やり方は簡単。
環境設定(Preference) > 色(Color) を選択。
Playmode tint の色を変更します。

すると、Playモード中のみエディタが全体にカラーが掛かるので、一目で現在の実行モードが分かります。

ゲームビューとシーンビューを同時に見れるように配置する
Unityのデフォルト設定だと、シーンビューとゲームビューが同時に見れないようになっています。
ですが、UIなどの配置をするときは、シーンビューとゲームビューを同時に見れないと作業になりません。そのため、エディタの配置を変更し、シーンビューとゲームビューを同時に見れるレイアウトにするのがオススメです。
私の個人的な好みは、ゲームビューを横長のゲームの場合は画面右上に縮小して配置。

スマホ用のゲームの場合は、画面右に縦長に配置です。この辺はお好みで。

変更するには簡単で、ゲームビューのタブをドラッグアンドドロップするだけです。

スナップを使用して等間隔に配置する
ゲームを作っていると、オブジェクトを等間隔に配置したい、ということがよくあります。
そんな時に使うのが、スナップ移動です。
やり方は簡単。
キーボードのWキーを押して移動ツールにしたあと、Ctrl(Macの場合Option)キーを押しながら移動させるだけです。

もちろん、移動だけでなく、回転やスケールでも適用出来ます。一回の操作で移動する量は、シーンビューの上の方にあるアイコンから設定が出来ます。


また、複数のゲームオブジェクトを選択した状態で、インスペクタにL(最小値、最大値)
といれると等間隔に配置することが出来ます。

ショートカット:Fキー
ゲーム作ろう!と思っているような意気込みのある方なら、Ctrl + Z、Ctrl + C 、Ctrl + V、Q/W/E/Rキー あたりは使っていると思うので、それ以外のショートカットを紹介。
まずは、オブジェクトを選択した状態でFキー。これで、シーンビューのカメラがオブジェクトを画面の中心になるように移動出来ます。

他にもアニメーションカーブが見づらい時にFキーを押すといい感じにサイズを調整してくれます。

他にも、個人的に超多用するショートカットを挙げておきます。
キー | 説明 |
---|---|
プロジェクトウィンドウで、フォルダorファイルを選択してF2キー | ファイル名の変更 |
Ctrl + P | プレイモードの再生/停止 |
Ctrl + Shfit + C | コンソールウィンドウを表示 |
また、
編集 > ショートカット
自分固有のショートカットを設定することも出来ます。

少し分かりづらいのですが、実行したいコマンドを選択した状態で、ショートカット欄をダブルクリックし、キーを押すとショートカットが設定されます。
私は、スプライトエディターや、パッケージマネージャーを開くカスタムショートカットを設定しています。
UI系
デフォルトのText Mesh Proのフォントを変更する
UnityのデフォルトでUIのテキストを追加すると、Liberasion Sansというフォントになりますが、正直このフォントを使ってゲームを作っている人は、ほぼいないと思います。
大体の場合は、オリジナルのフォントを使ってゲームを作っていると思います。
TextMeshProについては、以下の記事で解説しています。基本的に現代では、TextではなくTextMeshProを使った方が良いです。

デフォルトのフォントがLiberasion Sansだと、フォントを変える手間があるので不便です。
そこで、自分が入れたフォントをデフォルトにする設定を紹介。
編集 > ProjectSettins > TextMeshPro > 設定 を選択。
するとデフォルトの設定を変更出来ます。

フォントだけでなく、UI上の表示(XとYの高さなど)のデフォルト設定も出来ます。
デフォルトだと恐らくフォントサイズや、表示幅が小さいことが多いので、自分の好みにカスタムするのがオススメです。
Altキーを押しながら階層を選択
ゲームを作っていると、徐々に階層が深くなっていきがちです。特にUIの作成時はあるあるだと思います。
ですが、深くなった階層を1つづつ開けていくのは面倒。そんなときに使えるのが、Altキーを押しながらオブジェクトに左にある三角形をクリックです。

ポチポチ開けていくより全然早いですね!
また、TIPSというより、作り方の話ですが、ボタンなどのUIのオブジェクトは可能な限りPrefab化することをオススメします。詳しくは以下の関連記事で。

インスペクタウィンドウ
インスペクタウィンドウの表示を固定する
インスペクタウィンドウから、オブジェクトをアタッチするためにプロジェクトウィンドウに移動して...としてたら、インスペクタウィンドウの内容が切り替わってしまった。
そんな経験ないでしょうか?そこで、インスペクタウィンドウの表示を固定する方法を2つ紹介。
コンポーネントを選択 > プロパティ
実は、Unityのコンポーネントを単体で表示することが出来ます。下のGIFのイメージの通りです。

この新しく出したウィンドウは、ドラッグアンドドロップでタブ化することも出来ちゃいます。

インスペクタウィンドウをロック
これは多くの人がやっていると思いますが、インスペクタウィンドウの右上の鍵ボタンを押すと、インスペクタの内容を固定出来ます。

インスペクタを使いやすくする
次にインスペクタウィンドウのカスタムです。
インスペクタウィンドウに、大量のパラメータが並ぶということもよくあると思います。
あまりに数が多いと、どこに何があるか分からなくなってしまうことがあります。
そこで役に立つのがインスペクタを見やすくするコードの書き方です。
よく使うのが、[Header("xxx")]
、[Range(x,y)]
、[Space]
、です。
例えば、以下のように変数を定義したとします。
[Header("階層1")]
public int test1;
public int test2;
[Space]
[Header("階層2")]
[Range(0,1)]
public float test3;
public string test4;
すると、インスペクタウィンドウは以下のようになります。

Headerで囲われた箇所が太字になり、Rangeで指定した変数はスライダーになりましたね。
すべて並列で並ぶよりも、見やすくなったのではないでしょうか?
また、パラメータを調整する時も、0~1の間しか取らないパラメータなどは、[Range]を使うと設定が行いやすいです。ぜひ使ってみてください。
デバッグ効率化
Serializedされていないprivate関数をインスペクタで表示する
スクリプト上、public変数か、[Serialized]がついていないprivateな変数は通常インスペクタに表示されません。
public int test1;
[SerializeField]private int test2;
private int test3;

ですが、デバッグをしていると、参照関係がどこで切れてしまっているかを確認したり、private変数の現在の値が何かを見たい、ということが多く発生します。
ただ、毎回スクリプトにDebug.Logを仕込むのも少し手間です。
そこで活躍するのが、インスペクタのデバッグ表示です。
インスペクタの右上の点々を選択して、デバッグを選択してください。

すると、インスペクタウィンドウにprivateな変数も表示されるようになりました!

便利な割にあまり知られていない機能ですが、絶対デバッグ効率が上がると思います。
デバッグ用の処理を入れておく&Editor Onlyタグを使用する
これはTipsというより、開発のやり方みたいな話です。
ゲームを開発していると、デバッグのために何度も同じシーンをプレイして動作を確認する、ということがあると思います。
毎回ゲームスタートシーンからゲームスタートボタンを押さないと、動作確認が出来ないというのは非常に効率が悪いです。
なので、一見面倒に感じますが、すぐにゲームの状態をリセットしたり、開始出来るような、デバッグ用のクラスやメソッドを開発序盤から作っておくことが、却って効率化に繋がります。
ただ、こういったデバッグ用のオブジェクトやスクリプトですが、ビルド時に含まれて欲しくないですよね。そんな時に使えるのがEditorOnly
タグです。
デバッグ用のGameObjectを選択し、タグからEditorOnly
を選択すると、ビルド時には無視され、Unityのエディタ上だけで機能するようになります。

このGameObjectにデバッグ用のスクリプトをアタッチしておけば、本番時にデバッグ用のコードが実行される、といったことを防ぐことが出来ます。
デバッグログをカスタムする
Unityの初心者本では、大体Debug.Logというコードを書く指示がついていますが、開発が進んでいくとDebug.Logが多くなってコンソールから探したいログを探すのに一苦労ということが発生します。
そこで使えるのがDebug.Logを少しカスタムして記載する方法です。
これは見ていただくのが早いですね。
void Start()
{
// ログの種類
Debug.Log("普通のログ");
Debug.LogWarning("ワーニング");
Debug.LogError("エラーログ");
// 文字列補間
Debug.Log($"test4の値は{test4}");
// 色付け
Debug.Log($"<color=red>[Player]</color>速度は{test1}");
}
これで実行すると、

上記のように、ログの表示をカスタム出来ます。
PlayerとEnemyで色を変えて表示する、など工夫してログを書くようにすると、ログが探しやすくなり、イチイチ検索しなくて済みます。
プラグイン系
同名ファイルを上書きしてくれるUnityOverwriter
個人的なUnityへの大きな不満点なのですが、同名のオブジェクトを同じファイルに入れても、上書きされずに新しいオブジェクトが作られてしまいます。
例えば、3Dモデル編集ソフトで作成したFBXファイルを取り込んだが、Unityでの作業途中でファイルの内容にミスがあることが判明。
再度、作り直して同じフォルダに取り込むと、上書きされずに新しいオブジェクトが作られてしまいます。

これだと、修正がある度に、前に入れたファイルを消す作業が発生するので、地味に手間が掛かります。
これを解消してくれるのが、『unity-overwriter』です。
導入方法は作者様が詳しく書いてくださっているので割愛します。
このプラグインを使うと同じフォルダに同名のファイルがある場合、上書きを提案してくれます。上書きで取り込むと下のGIFのように二重にファイルが作られなくなります。

また、上書きを行っても、そのアセットを使用したGameObjectのインスペクタでの設定値は変わりません。
正直、このプラグインの無しで開発にはもう戻れない!と感じるくらい気にいっています、ありがとうございます!
余談:大分エンジニア向きの内容になりますが、作者様のYoutube動画も大変勉強になります。
さいごに
ゲーム制作というのは途方もない作業が必要になるものです。人間が設定を行う作業というのは少なからず発生します。
少しでも作業時間を短くして、本質的なゲームの「楽しい」を開発することに注力出来るよう、この記事が助けになれば幸いです。
他にも、こんなTIPSがあるよ!というものがあれば、ぜひコメントしてくださいね定期。
それでは素敵なゲーム制作ライフを!
コメント
コメント一覧 (2件)
[…] 【Unity】知らないとヤバイ!?開発を爆速化するTIPS集 […]
[…] 【Unity】知らないとヤバイ!?開発を爆速化するTIPS集 本記事の内容 […]