環境
- Unity5.4.2f1
この記事を書いたのが2015年7月。
1年経って改めて Unity開発で気をつけておきたいことをまとめてみます。
1位. Find系関数は極力使わない
2015年版から引き続き、Find系関数は出来る限り使用しないようにしています。
ゲーム開発中またはリリース後のデザイン変更における GameObject同士の階層変更 はよく発生する作業で、ソースコードで相対パスを指定をし、Transformコンポーネントを取得するのは非常にリスキーだと私は考えています。 なぜならGameObject階層を変更する度にソースコードも変更が必要になるからです。
Unity開発で気をつけておきたい7つの事 - 渋谷ほととぎす通信
まさに去年の記事と同じで、開発中・運用中のヒエラルキー変更は日常的に発生する事案です。その度にコードを変更するのは時間のムダです。そんなことより、プロダクトのクオリティを上げることに時間を使うべきです。
※2016年版改定箇所
解決案としては、public変数、もしくはSerializeFieldアトリビュートをつけた変数を定義し、オブジェクトを予めアタッチしておくのが良いと思います。
Unity開発で気をつけておきたい7つの事 - 渋谷ほととぎす通信
2016年だから訂正するということではありませんが、『public変数定義』をオブジェクトのアタッチ機能として使用しないという結論に至りました。
理由としては、インスタンス外から簡単に上書きできてしまうからです。
// ☓ 私はこの方法を禁止しています public Transform hoge; // ○ こちらを採用 [Serializefield] private Transform foo;
2位.SendMessageは使わない
堂々の第2位はSendMessageです。
メソッドをどこから呼んでいるのか、たどり着くのが非常に大変になり、ソースコードを読む難易度が一気に跳ね上がります。
Unity開発で気をつけておきたい7つの事 - 渋谷ほととぎす通信
SendMessageを使っているソースコードは読むのが嫌になります。
※ルールに則ってイベント的に使用しているなら良いと思います
補足するとSendMessageはprivate関数もインスタンスの外側から実行可能です。下手にSendMessageを導入してしまうとルールが崩壊しプロジェクトがカオス化する可能性があります。
ただ、この機能を利用してEditor拡張でprivateな関数をテストとして呼ぶということも出来るので、工夫次第で便利ではあります。
3位.カメラの同時使用数は極力減らす
カメラ負荷はかなり大きいものです。Unity Profilerで見ても一目瞭然です。
3Dのゲームであれば最低限 3D表示用
、 2DUI表示用
の2つは必要になると思いますが、
その他にも例えば、
- ポップアップ用
- ポップアップの更に上に乗っかってくるオーバーレイ用
- UIとは独立したローディングUI用
- エフェクトが3D背景の地面にめり込んでしまうからもう一個追加しよう的なノリでエフェクト用
- レンダーテクスチャ用
などなど。油断しているどんどん増えていきます。
増えてもよいのですが、同時に使用する個数を制限するように設計しないと負荷がとんでもない事になり、調整に時間がかかることになると思います。
出来る限り減らすということを心がけたいです。
4位. ログ出力にルールを設ける
ログはデバッグする上で欠かせない存在です。
Debug.Log ("<color=yellow>黄色のログ</color>"); Debug.Log ("<color=#0033ff>カラーコードのログ</color>");
その一環でコンソールは色分けすると分かりやすくなると思います。
また、コンソール内のログ検索が可能になるConsole Enhancedを使うと更に強力です。
参考記事
5位.Resourcesフォルダには最低限のものだけを入れる
Resourcesフォルダにファイルを沢山入れると、スプラッシュ画面 (起動画面) のロードが時間かかります
Unity開発で気をつけておきたい7つの事 - 渋谷ほととぎす通信
Resources格納ファイル数に対するスプラッシュ時の遅延時間は計測しないとなんとも言えませんが、確実にコストにはなりますので、最低限に留めたいです。
6位.デザイナーと出来ること出来ないことを認識合わせしておく
- フォントデータは容量を食うので埋め込みフォントを絞る
- uGUIの場合半透明マスクは厳しい
- uGUIの場合テキストのカーニングはデフォ状態だと厳しい
などなど
制作するゲームの仕様次第ではありますが、デザイナーとは密接に認識合わせしておくことは非常に大事です。
7位.Prefab名とコンポーネント名は出来る限り同じにする
このコンポーネントはどのPrefabにアタッチされているのか、という状況はよく起きます。 こんな時Prefab名とコンポーネント名が全く違っていたら、非常に探しづらいです。
Unity開発で気をつけておきたい7つの事 - 渋谷ほととぎす通信
作業効率的にも、後からプロジェクトにジョインした人のためにも、プロジェクト初期から習慣づけておきたいところです。
まとめ
気をつけたい視点が、集団開発でプロジェクトを長期的に見た時にカオス化させないための順位になっていることに書き終わって気づきました。
私自身が今同じような状況だったからかもしれません。
個人でサクッと作って運用しないというプロジェクトには当てはまらないものも多いと思います。そこは取捨選択して頂きつつ。。。
何事も最初が肝心で、習慣的な間違いを修正するなら早いに越したことはありません。 あくまで参考に。
また、前回の記事から外れてしまった項目は、私の中でプライオリティが下がったということでランク外になりました。
4.Shurikenを動的生成するときはEmissionタイプに気をつける
Unity開発で気をつけておきたい7つの事 - 渋谷ほととぎす通信
こちらは現行バージョンでは修正されています。