はじめに
UnityのAddressable Assets Systemにおけるアドレス設定を自動化する「SmartAddresser」に、新機能としてCompositeLayoutRuleDataを追加しました。
この機能により、複数のLayoutRuleData
を透過的に扱い、ビルド構成をより柔軟に管理できるようになります。
SmartAddresserとは
SmartAddresserは、UnityのAddressable Assets Systemにおけるアドレスやグループの割り当てを、アセットのパスなどに基づいて自動化するエディタ拡張です。
ルールベースでアドレスを管理することにより、手動での設定作業を削減し、ヒューマンエラーの防止やアセット管理の効率化を実現します。
弊社からOSSとしてリリースしています。
基本的な使い方については以下のリポジトリを参照してください。
複数のレイアウトルールが必要になるケース
プロジェクトの開発・運用においては、状況に応じてビルド対象のアセット構成を変更したい場面が存在します。
- マスターデータのみのビルド:ゲームのマスターデータをAddressableで配信する構成において、データのみを素早くビルドし、更新内容を確認したい。
- 開発用アセットの除外:デバッグメニュー用のUIアセットやテスト用のリソースなど、開発中にのみ必要なアセットを本番ビルドの対象から除外したい。
従来、このようなケースに対応するためには、その都度LayoutRuleData
を書き換えるといった対応が必要でした。
新機能「CompositeLayoutRuleData」の概要
CompositeLayoutRuleData
は、このような課題を解決するために設計されました。
この機能を用いると、複数のLayoutRuleData
をまとめて適用することができます。
例えば、「マスターデータ用のルール」と「それ以外のルール」といったように、役割ごとにLayoutRuleData
を分割して管理できます。
そして、マスターデータだけをビルドしたい場合はマスターデータ用のLayoutRuleData
のみを適用し、マスタデータを含む全てのアセットをビルドしたい場合はCompositeLayoutRuleData
によりそれらをまとめて適用する、といった操作が行えます。
使ってみる
それでは実際に使用してみます。
まず、Assets > Create > Smart Addresser > Layout Rule Data からLayoutRuleData
を二つ作成します。
今回は、LayoutRuleData-Main と LayoutRuleData-Sub という二つのデータを作成しました。
次に、Group1 と Group2 という名前の Addressable Group を作成します。
その上で、以下のようにルールを設定しました。
- LayoutRuleData-Main
- Group1 に Animation フォルダのアセットを登録
- Group2 に Audio フォルダのアセットを登録
- LayoutRuleData-Sub
- Group2 には何も登録しない
- Group2 に Scene フォルダのアセットを登録
この状態で、Layout Rule Editor 右上の 三点リーダ > Apply to Addressables メニューから、LayoutRuleData-Main を適用します。
Group1 に Animation フォルダのアセットが、Group2 に Audio フォルダのアセットが登録されていることを確認できました。
同様に LayoutRuleData-Sub だけを適用すると、Group1 は空になり、Group2 に Scenes フォルダのアセットが登録されます。
次に、CompositeLayoutRuleData
の Inspector の Apply ボタンから両方の LayoutRuleData
を適用します。
すると下図のように、Group2 に Audio フォルダのアセットと Scene フォルダのアセットの両方が登録されることを確認できます。
以上が CompositeLayoutRuleData
の基本的な使い方になります。
README にも説明を記載していますので、併せて参照してください。
注意点
CompositeLayoutRuleData
を利用する際には、以下の点にご注意ください。
LayoutRuleData間の依存関係
各LayoutRuleData
は、なるべく他のルールに依存しない、疎結合な状態を維持することが推奨されます。
ルール間に依存関係が存在すると、単体でビルドした場合と組み合わせてビルドした場合で結果が異なり、管理が煩雑になる可能性があります。
依存アセットの重複
異なるLayoutRuleData
に含まれるアセット群が、Unityのビルトインシェーダーなどに依存している場合、アセットが重複してアセットバンドルに含まれる可能性があります。
まとめ
CompositeLayoutRuleData
は、プロジェクトのビルド構成をより柔軟かつ効率的に管理するための新機能です。アセットの役割に応じてルールを分割し、それらを自在に組み合わせることで、開発サイクル全体の生産性向上に貢献します。
ぜひ、アップデートされたSmartAddresserをご活用ください。