CORETECH ENGINEER BLOG

株式会社サイバーエージェント SGEコア技術本部 技術ブログ

SmartAddresserアップデート:複数のルールセットを透過的に扱える新機能「CompositeLayoutRuleData」を追加しました

はじめに

UnityのAddressable Assets Systemにおけるアドレス設定を自動化する「SmartAddresser」に、新機能としてCompositeLayoutRuleDataを追加しました。
この機能により、複数のLayoutRuleDataを透過的に扱い、ビルド構成をより柔軟に管理できるようになります。

SmartAddresserとは

SmartAddresserは、UnityのAddressable Assets Systemにおけるアドレスやグループの割り当てを、アセットのパスなどに基づいて自動化するエディタ拡張です。
ルールベースでアドレスを管理することにより、手動での設定作業を削減し、ヒューマンエラーの防止やアセット管理の効率化を実現します。

弊社からOSSとしてリリースしています。
基本的な使い方については以下のリポジトリを参照してください。

github.com

複数のレイアウトルールが必要になるケース

プロジェクトの開発・運用においては、状況に応じてビルド対象のアセット構成を変更したい場面が存在します。

  • マスターデータのみのビルド:ゲームのマスターデータをAddressableで配信する構成において、データのみを素早くビルドし、更新内容を確認したい。
  • 開発用アセットの除外デバッグメニュー用のUIアセットやテスト用のリソースなど、開発中にのみ必要なアセットを本番ビルドの対象から除外したい。

従来、このようなケースに対応するためには、その都度LayoutRuleDataを書き換えるといった対応が必要でした。

新機能「CompositeLayoutRuleData」の概要

CompositeLayoutRuleDataは、このような課題を解決するために設計されました。

この機能を用いると、複数のLayoutRuleDataをまとめて適用することができます。
例えば、「マスターデータ用のルール」と「それ以外のルール」といったように、役割ごとにLayoutRuleDataを分割して管理できます。

そして、マスターデータだけをビルドしたい場合はマスターデータ用のLayoutRuleDataのみを適用し、マスタデータを含む全てのアセットをビルドしたい場合はCompositeLayoutRuleDataによりそれらをまとめて適用する、といった操作が行えます。

使ってみる

それでは実際に使用してみます。

まず、Assets > Create > Smart Addresser > Layout Rule Data からLayoutRuleDataを二つ作成します。
今回は、LayoutRuleData-MainLayoutRuleData-Sub という二つのデータを作成しました。

次に、Group1Group2 という名前の Addressable Group を作成します。
その上で、以下のようにルールを設定しました。

  • LayoutRuleData-Main
    • Group1 に Animation フォルダのアセットを登録
    • Group2 に Audio フォルダのアセットを登録

LayoutRuleData-Main

  • LayoutRuleData-Sub
    • Group2 には何も登録しない
    • Group2 に Scene フォルダのアセットを登録

LayoutRuleData-Sub

この状態で、Layout Rule Editor 右上の 三点リーダ > Apply to Addressables メニューから、LayoutRuleData-Main を適用します。

LayoutRuleData-Main

Group1 に Animation フォルダのアセットが、Group2 に Audio フォルダのアセットが登録されていることを確認できました。

同様に LayoutRuleData-Sub だけを適用すると、Group1 は空になり、Group2 に Scenes フォルダのアセットが登録されます。

LayoutRuleData-Sub

次に、CompositeLayoutRuleData の Inspector の Apply ボタンから両方の LayoutRuleData を適用します。

CompositeLayoutRuleDataのInspector

すると下図のように、Group2 に Audio フォルダのアセットと Scene フォルダのアセットの両方が登録されることを確認できます。

CompositeLayoutRuleDataの適用結果

以上が CompositeLayoutRuleData の基本的な使い方になります。

README にも説明を記載していますので、併せて参照してください。

github.com

注意点

CompositeLayoutRuleDataを利用する際には、以下の点にご注意ください。

LayoutRuleData間の依存関係

LayoutRuleDataは、なるべく他のルールに依存しない、疎結合な状態を維持することが推奨されます。

ルール間に依存関係が存在すると、単体でビルドした場合と組み合わせてビルドした場合で結果が異なり、管理が煩雑になる可能性があります。

依存アセットの重複

異なるLayoutRuleDataに含まれるアセット群が、Unityのビルトインシェーダーなどに依存している場合、アセットが重複してアセットバンドルに含まれる可能性があります。

まとめ

CompositeLayoutRuleDataは、プロジェクトのビルド構成をより柔軟かつ効率的に管理するための新機能です。アセットの役割に応じてルールを分割し、それらを自在に組み合わせることで、開発サイクル全体の生産性向上に貢献します。

ぜひ、アップデートされたSmartAddresserをご活用ください。