こんにちは、SGEコア技術本部(コアテク)の矢野です。
今回はコアテクで出しているOSSである Smart Addresser の新機能についてご紹介します。
SmartAddresserとは
SmartAddresserは、UnityのAddressable Assets Systemにおけるアドレスやグループの割り当てをアセットのパスなどに基づいて自動化するエディタ拡張です。
ルールベースでアドレスを管理することにより、手動での設定作業を削減し、ヒューマンエラーの防止やアセット管理の効率化を実現します。
弊社からOSSとしてリリースしています。
基本的な使い方については以下のリポジトリを参照してください。
アップデートの背景
これまでSmartAddresserは、ファイルパスやアセットの型などに基づいて対象アセットをフィルタリングし、ラベルやバージョンを付与していました。
しかし、実際のプロジェクトでは「指定した複数のグループに所属するアセットに全て「一括ダウンロード」ラベルを付けたい」などといったニーズがありました。
この要望に対応するため今回のアップデートでは、「アドレス」や「Addressableのグループ」を基にラベルやバージョンを付与できる機能を追加しました。
Asset Filter
Asset Filter については、新しいものを二つ追加しました。
一つ目はアドレスパターンでアセットをフィルタリングする Address Filter です。
二つ目はアセットグループを指定してアセットをフィルタリングする Addressable 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 です。
これらはアドレスの文字列を基にして、ラベルやバージョンを作成する場合に使用できます。
二つ目は AddressableAssetGroupNameBasedLabelProvider / AddressableAssetGroupNameBasedVersionProvider です。
これらはAddressableのグループ名の文字列を基にして、ラベルやバージョンを作成する場合に使用できます。
既存コードへの影響・マイグレーション
今回の更新では内部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)
既存のフィルターやプロバイダーでアドレスやグループ情報が不要な場合は、新しいパラメータを無視して構いません。