Skip to content

Conversation

@Haruma-K
Copy link
Member

@Haruma-K Haruma-K commented Jul 1, 2025

  • 「アドレス」や「Addressableのグループ」を基にラベルやバージョンを振れるようにしました
  • 具体的な変更内容は以下のリリースノートを参照してください

リリースノート

新機能

  • 新しいAsset Filter
    • Address Filter: アドレスパターンに基づいてアセットをフィルタリング(AddressRuleでは使用不可)
    • Addressable Group Filter: アセットが所属するグループに基づいてフィルタリング(AddressRuleでは使用不可)
  • 新しいProvider
    • Address Based Label/Version Provider: アセットのアドレスからラベル/バージョンを生成
    • Addressable Asset Group Name Based Label/Version Provider: グループ名からラベル/バージョンを生成

破壊的変更とマイグレーション

  • Asset Filterに以下のように引数が増えたので、カスタムアセットフィルタを作っている場合は引数を追加してください
// 旧
bool IsMatch(string assetPath, Type assetType, bool isFolder)

// 新 
bool IsMatch(string assetPath, Type assetType, bool isFolder, string address, AddressableAssetGroup addressableAssetGroup)
  • Label Provider / Version Providerに以下のように引数が増えたので、カスタムプロバイダーを作っている場合は引数を追加してください
// 旧
string Provide(string assetPath, Type assetType, bool isFolder)

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

Haruma-K and others added 15 commits June 27, 2025 18:31
IProviderは現在IAddressProviderでしか使用されていないため、
IProviderを削除し、そのメソッドをIAddressProviderに直接定義するように変更。

- IAddressProviderにSetup、Provide、GetDescriptionメソッドを直接定義
- AssetPathBasedProviderからIProvider<string>の実装を削除
- AssetPathBasedVersionProvider/LabelProviderをbaseクラスのメソッドを呼び出すように修正
- IProvider.csとそのメタファイルを削除
- テストコードのIProvider<string>へのキャストを削除

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- IAssetFilter.IsMatchにaddressとaddressableAssetGroupパラメータを追加
- AssetGroup/AssetGroupObservableListのContainsメソッドを更新
- AddressRuleではアドレスが未定のためnullを渡す
- LabelRule/VersionRuleでは実際のアドレスとグループ情報を渡す
- AssetFilterBase/AssetFilterAssetに新シグネチャを実装(後方互換性を維持)
- CustomAssetFilterを新しいシグネチャに更新

これにより、フィルター実装でアドレスやグループ情報に基づいた
より柔軟なフィルタリングが可能になりました。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
AssetFilterBaseの抽象メソッドIsMatchにaddressとaddressableAssetGroup
パラメータを追加し、全ての継承クラスで対応する修正を実施

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
全てのAssetFilterテストファイルでIsMatchメソッドの新しいシグネチャに対応
- addressとaddressableAssetGroupパラメータを追加
- 両パラメータにはnullを指定
- 必要なusing文を追加

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
アドレスに対して正規表現でフィルタリングするAddressBasedAssetFilterを実装
- RegexBasedAssetFilterを参考に実装
- アドレスパラメータを使用してマッチングを実行
- 対応するエディタUI用のDrawerも追加

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
特定のAddressableAssetGroupに属するアセットをフィルタリングする機能を実装
- AddressableAssetGroupの参照をListablePropertyで保持
- 専用のListablePropertyGUIクラスも追加
- エディタUI用のDrawerを実装

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- RestrictedToRulesAttribute を追加し、特定のRuleタイプでのみ使用可能なAssetFilterを指定できるように
- AddressBasedAssetFilter と AddressableAssetGroupBasedAssetFilter に制限を追加(Label、Versionルールでのみ使用可能)
- AssetGroupPanelPresenter と AssetGroupCollectionPanelPresenter のコンストラクタでRuleTypeを受け取るように変更
- 各RulePresenterから適切なRuleTypeを渡すように修正

これにより、AddressRuleのGUIではAddressBasedAssetFilterとAddressableAssetGroupBasedAssetFilterが選択できなくなりました。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
アドレスベースでラベルとバージョンを生成するプロバイダーを実装:
- AddressBasedProvider: 共通ロジックを持つベースクラス
- AddressBasedLabelProvider: アドレスからラベルを生成
- AddressBasedVersionProvider: アドレスからバージョンを生成

AssetPathBasedProviderと同様の設計パターンを採用し、
フルアドレスまたはファイル名のみの使用、正規表現による置換機能をサポート

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
アドレッサブルアセットグループ名でラベルとバージョンを生成するプロバイダーを実装:
- AddressableAssetGroupNameBasedProvider: 共通ロジックを持つベースクラス
- AddressableAssetGroupNameBasedLabelProvider: グループ名からラベルを生成
- AddressableAssetGroupNameBasedVersionProvider: グループ名からバージョンを生成

グループ名をそのまま使用、または正規表現による置換機能をサポート

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
コミット67a0f76以降の変更内容をドキュメントに反映:

Asset Filter:
- Address Filter: アドレスベースのフィルタリング
- Addressable Group Filter: グループベースのフィルタリング
- 両フィルタはAddressRuleでは使用不可

Provider:
- Address Based Label/Version Provider: アドレスからラベル/バージョンを生成
- Addressable Asset Group Name Based Label/Version Provider: グループ名からラベル/バージョンを生成

API変更:
- IAssetFilter.IsMatchメソッドにaddressとaddressableAssetGroupパラメータを追加
- Provider.ProvideメソッドにaddressとaddressableAssetGroupパラメータを追加

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
IsMatchメソッドの古いシグネチャ(address, addressableAssetGroupパラメータなし)を削除し、
新しいシグネチャのみを使用するように変更。これにより全てのAssetFilterで
新しいパラメータを使用できるようになった。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@Haruma-K Haruma-K requested review from hkmt-mmy and qua-iy July 1, 2025 05:28
Haruma-K and others added 3 commits July 1, 2025 14:42
- AddressBasedLabelProviderDrawer
- AddressBasedVersionProviderDrawer
- AddressableAssetGroupNameBasedLabelProviderDrawer
- AddressableAssetGroupNameBasedVersionProviderDrawer

これらのDrawerクラスにより、エディタ上で各Providerの設定をGUIで行えるようになります。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- AddressBasedLabelProviderDrawer
- AddressBasedVersionProviderDrawer
- AddressableAssetGroupNameBasedLabelProviderDrawer
- AddressableAssetGroupNameBasedVersionProviderDrawer

これらのDrawerクラスにより、エディタ上で各Providerの設定をGUIで行えるようになります。
…tGameEntertainment/SmartAddresser into feature/group-based-filter
@Haruma-K Haruma-K marked this pull request as draft July 1, 2025 05:54
- AddressBasedProviderクラスからUseFullAddressプロパティとフィールドを削除
- 常にフルアドレスを使用するように変更
- 関連するDrawerクラスからUseFullAddressのUI要素を削除
@Haruma-K Haruma-K marked this pull request as ready for review July 1, 2025 07:44
var replaceWithRegexLabel = ObjectNames.NicifyVariableName(nameof(target.ReplaceWithRegex));
target.ReplaceWithRegex = EditorGUILayout.Toggle(replaceWithRegexLabel, target.ReplaceWithRegex);

GUI.enabled = target.ReplaceWithRegex;
Copy link
Contributor

@hkmt-mmy hkmt-mmy Jul 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

enabledに関しても DisabledGroupScope を使ったほうが良いかも

new Dictionary<string, AssetGroupPanelPresenter>();

private readonly AutoIncrementHistory _history;
private readonly RuleType? _ruleContext;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

変数名がContextなのは何かの名残でしょうか。普通に _ruleType で良さそうに思います

Copy link
Contributor

@hkmt-mmy hkmt-mmy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AddressやGroupベースで動作するケースに関してもテストを書いたほうが良さそうです

README_JA.md Outdated
|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Constant Label Provider | 固定値でラベルを付与します。<br><br>Label<br>付与するラベルの名前。 |
| Asset Path Based Label Provider | 対象アセットのアセットパスを元にラベルを付与します。<br><br>**Source**<br>以下のパターンからラベルを指定します。<br>・File Name: 拡張子付きファイル名<br>・File Name Without Extensions: 拡張子なしアセット名<br>・Asset Path: アセットパス<br><br>**Replace With Regex**<br>チェックをつけると、Pattern を元に正規表現を作成し、Source を Replacement で Regex.Replace したものをラベルとします。 |
| Address Based Label Provider | 対象アセットのアドレスを元にラベルを付与します。<br><br>**Use Full Address**<br>チェックをつけると、フルアドレスを使用します。チェックを外すと、最後の'/'以降の部分(ファイル名)のみを使用します。<br><br>**Replace With Regex**<br>チェックをつけると、Pattern を元に正規表現を作成し、アドレスを Replacement で Regex.Replace したものをラベルとします。 |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AddressBasedLabelProviderDrawerとAddressBasedVersionProviderDrawerを確認しましたが "Use Full Address" という設定項目はなさそうですが、見るところ間違えてますかね

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不要だったのでコードから消したやつでした、対応します。

Haruma-K and others added 3 commits July 1, 2025 22:08
- AddressBasedProvider関連のテスト
- AddressableAssetGroupNameBasedProvider関連のテスト
- LabelProvider及びVersionProviderのテスト
- AssetFilter実装のテスト
- READMEの微修正
AddressBasedとAddressableAssetGroupNameBasedの各Provider系テストから、実用性の低い複雑なRegexパターンのテストケースを削除しました。
基本的な動作確認に必要なテストケースは残しています。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Haruma-K and others added 3 commits July 3, 2025 10:51
- 空のアドレスのテストケース(IsMatch_WithEmptyAddress_ReturnsFalse)を削除
- 複雑な正規表現パターンのテストケース(IsMatch_WithComplexPattern_WorksCorrectly)を削除
- メソッド名を改善(SetupForMatching_WithInvalidRegex_DoesNotThrow)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
全てのProviderDrawerクラスで、GUI.enabledの直接的な操作から
EditorGUI.DisabledScopeを使用したusing文の方式に変更。
これによりコードがより現代的なUnityのベストプラクティスに準拠。

🤖 Generated with Claude Code

Co-Authored-By: Claude <[email protected]>
AssetGroupCollectionPanelPresenterとAssetGroupPanelPresenterで使用されていた
_ruleContextフィールド名を_ruleTypeに統一。パラメータ名も同様に変更。
@Haruma-K Haruma-K requested a review from hkmt-mmy July 3, 2025 02:19
@Haruma-K
Copy link
Member Author

Haruma-K commented Jul 3, 2025

レビューいただいた点、修正しました。
再レビューお願いします 🙏

Base automatically changed from feature/fix_readme to main July 3, 2025 03:31
@Haruma-K Haruma-K merged commit af7fbfc into main Jul 3, 2025
1 check passed
@Haruma-K Haruma-K deleted the feature/group-based-filter branch July 3, 2025 03:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants