NHN Cloud Meetup 編集部
Unity依存性によるアセット管理と生産性の向上
2021.01.26
987
アセット管理の必要性
Unityで作業する際に、どのようアセットがどのような場所にあるかを探して修正するといったプロセスが何度もあるかと思います。
スクリプト、テクスチャ、モデリングなどの主な作業を行った後にアセットの関連作業が行われますが、既存のアセットにどのようなものがあるか、それがどこにあるか、さらにはアセット内部のヒエラルキーがどこに付いているか、などを見つけるのに時間がかかります。
このようなプロセスでバグが発生することもあり、確認作業も必要になります。これらはすべてアセット管理にかかるコストで、アセットが多くなるほど大きくなります。履歴をよく把握している経歴のある担当者になるほど、これらのプロセスが省略され効率が良くなります。
既存のアセット管理
このようなアセット管理のコストを削減するため、アセット名と種類別にフォルダを十分に区別します。
ItemSlotというスクリプトがある場合は、接続されたプレハブもItemSlotのように名前を同一または類似させて作成し、フォルダをうまく使い分けましょう。そして検索するときは、フォルダに沿って探したり名前で検索する方法を用います。しかし、この方法はアセットが多くなり、ますます見つけにくくになります。
依存性を用いたアセット管理
これらの問題は、依存性によるアセット管理を使うことで改善できます。
すべてのアセットは依存性を持っています。
プレハブなどの上位アセットで接続されたスクリプト、モデリングなどのGUIDを保有し、使用時にロードします。これらの情報を利用して接続されたアセットを知ることができます。これは、UnityメニューのSelect Dependenysで確認することができます。
しかしこの場合、プレハブのような上位アセットから下位のアセットのみが検索できます。もし、上記の例で示したItemSlotスクリプトがあるとした場合、ItemSlotを使用するプレハブはわかりません。ItemSlotを修正しても、上位プレハブを探さなければならないといったアセット管理の問題は依然として残っています。
AssetManagementによるアセット管理
AssetManagementを使ったアセット管理を紹介しましょう。
AssetManagementは無料で簡単に取得できます。
AssetManagementを使用すると、グラフでアセットの関係性を直感的に表します。初めて見るアセットでも関係性を直感的に把握して簡単に管理することができます。これによって、分析や引継ぎなどの時間も短縮することができます。
アセット依存性により直感的な認知が可能
使用しているアセットが一度でわかるため、下位や上位アセットが修正されても、今まで見つけるのにかかっていたコストがなくなります。
たとえば、ItemSlotスクリプトに新しい属性を追加したとします。
public class ItemSlot : MonoBehaviour { // Add Code public GameObject AdditiveObject; ... }
このとき、どのフォルダにあってもItemSlotスクリプトに付けられたアセットを知ることができます。さらにリファレンス検索を通じて、どのゲームオブジェクトに付いているかを把握して修正することができます。これで今までのようにアセットを探し回るコストはなくなります。
簡単なアセット交換
フォントやスプライトのように、コンポーネント内に属性として含まれている場合もあります。アセット内部のどこに接続されているかを探し出す必要があるため、従来の方法ではさらにコストが大きくなります。これもリファレンス検索を通じてどの属性に接続されているか確認ができ、交換も簡単に行えます。
上部の言語メニューで英語への切り替えが可能です。
以下は韓国語画面での操作イメージです。
安全なアセット管理
依存性が存在しない場合、接続されたアセットがないので安全に削除することができます。また、誤った削除によって欠落してしまった場合にも簡単に把握することができます。
まとめ
このように、AssetManagementを使って生産性を向上させることができます。
依存性を活用し、ダウンロード、ビルドサイズのメモリなどを最適化することができます。
インストール方法
インストール方法を紹介します。
- Asset StoreからGamePackageManagerをインストールします。
- メニューのTools/GPM/Managerを選択して、AssetManagementをインストールします。
以下は韓国語画面での操作イメージです。
AssetManagementのほか、GamePackageManagerはゲーム内でウェブページを開くことができるWebviewや、デバッグ接続なしでもゲーム内でログを見ることができるLogviewerのような、開発時に役立つさまざまなアセットがあります。