CORETECH ENGINEER BLOG

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

SmartAddresserで「アドレス」や「Addressableのグループ」を基にラベルやバージョンを付与できるようになりました

こんにちは、SGEコア技術本部(コアテク)の矢野です。
今回はコアテクで出しているOSSである Smart Addresser の新機能についてご紹介します。

SmartAddresserとは

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

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

github.com

アップデートの背景

これまでSmartAddresserは、ファイルパスやアセットの型などに基づいて対象アセットをフィルタリングし、ラベルやバージョンを付与していました。
しかし、実際のプロジェクトでは「指定した複数のグループに所属するアセットに全て「一括ダウンロード」ラベルを付けたい」などといったニーズがありました。

この要望に対応するため今回のアップデートでは、「アドレス」や「Addressableのグループ」を基にラベルやバージョンを付与できる機能を追加しました。

Asset Filter

Asset Filter については、新しいものを二つ追加しました。

一つ目はアドレスパターンでアセットをフィルタリングする Address Filter です。

Address Filter

二つ目はアセットグループを指定してアセットをフィルタリングする Addressable Group Filter です。

Addressble Group Filter

Label Rules や Version Rules を指定する際にこれらのフィルタが選択できるようになります。
Address Rules を指定する際には使えません(Address Rule はそもそもアドレスやAddressableのグループを決定するためのルールなので)。

Label Provider / Version Provider

Label Provider と Version Provider についても、アドレスやAddressableのグループベースのものを追加しました。

一つ目は AddressBasedLabelProvider / Address Based Version Provider です。
これらはアドレスの文字列を基にして、ラベルやバージョンを作成する場合に使用できます。

AddressBasedLabelProvider

二つ目は AddressableAssetGroupNameBasedLabelProvider / AddressableAssetGroupNameBasedVersionProvider です。
これらはAddressableのグループ名の文字列を基にして、ラベルやバージョンを作成する場合に使用できます。

AddressableAssetGroupNameBasedLabelProvider

既存コードへの影響・マイグレーション

今回の更新では内部APIに変更が加わりました。
カスタムのAsset FilterやProviderを実装している場合は、以下の対応が必要です。

Asset Filterの変更

// 旧
bool IsMatch(string assetPath, Type assetType, bool isFolder)

// 新 
bool IsMatch(string assetPath, Type assetType, bool isFolder, string address, AddressableAssetGroup addressableAssetGroup)

Providerの変更

// 旧
string Provide(string assetPath, Type assetType, bool isFolder)

// 新
string Provide(string assetPath, Type assetType, bool isFolder, string address, AddressableAssetGroup addressableAssetGroup)

既存のフィルターやプロバイダーでアドレスやグループ情報が不要な場合は、新しいパラメータを無視して構いません。