From d58a82bfa5280ec510ed855e15b98c3ca7f7ef9f Mon Sep 17 00:00:00 2001 From: L <401419353@qq.com> Date: Wed, 22 Jun 2022 17:25:06 +0800 Subject: [PATCH] Change Editor Cache type Loading API to TypeCache --- .../AssetBundleCollectorSettingData.cs | 56 ++++--------------- 1 file changed, 11 insertions(+), 45 deletions(-) diff --git a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSettingData.cs b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSettingData.cs index 6d1d158..d2d5da9 100644 --- a/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSettingData.cs +++ b/Assets/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSettingData.cs @@ -113,24 +113,11 @@ namespace YooAsset.Editor _cachePackRuleTypes.Clear(); _cachePackRuleInstance.Clear(); - // 获取所有类型 - List types = new List(100) - { - typeof(PackSeparately), - typeof(PackDirectory), - typeof(PackTopDirectory), - typeof(PackCollector), - typeof(PackGroup), - typeof(PackRawFile), - }; + var types = TypeCache.GetTypesDerivedFrom(); - var customTypes = EditorTools.GetAssignableTypes(typeof(IPackRule)); - types.AddRange(customTypes); - for (int i = 0; i < types.Count; i++) + foreach(var type in types) { - Type type = types[i]; - if (_cachePackRuleTypes.ContainsKey(type.Name) == false) - _cachePackRuleTypes.Add(type.Name, type); + _cachePackRuleTypes.TryAdd(type.Name, type); } } @@ -140,22 +127,11 @@ namespace YooAsset.Editor _cacheFilterRuleTypes.Clear(); _cacheFilterRuleInstance.Clear(); - // 获取所有类型 - List types = new List(100) + var types = TypeCache.GetTypesDerivedFrom(); + + foreach(var type in types) { - typeof(CollectAll), - typeof(CollectScene), - typeof(CollectPrefab), - typeof(CollectSprite) - }; - - var customTypes = EditorTools.GetAssignableTypes(typeof(IFilterRule)); - types.AddRange(customTypes); - for (int i = 0; i < types.Count; i++) - { - Type type = types[i]; - if (_cacheFilterRuleTypes.ContainsKey(type.Name) == false) - _cacheFilterRuleTypes.Add(type.Name, type); + _cacheFilterRuleTypes.TryAdd(type.Name, type); } } @@ -165,21 +141,11 @@ namespace YooAsset.Editor _cacheAddressRuleTypes.Clear(); _cacheAddressRuleInstance.Clear(); - // 获取所有类型 - List types = new List(100) + var types = TypeCache.GetTypesDerivedFrom(); + + foreach(var type in types) { - typeof(AddressByFileName), - typeof(AddressByCollectorAndFileName), - typeof(AddressByGroupAndFileName) - }; - - var customTypes = EditorTools.GetAssignableTypes(typeof(IAddressRule)); - types.AddRange(customTypes); - for (int i = 0; i < types.Count; i++) - { - Type type = types[i]; - if (_cacheAddressRuleTypes.ContainsKey(type.Name) == false) - _cacheAddressRuleTypes.Add(type.Name, type); + _cacheAddressRuleTypes.TryAdd(type.Name, type); } } }