public void ReloadCollections() { #if UNITY_EDITOR if (Application.isPlaying) { return; } string[] collectionsGUIDs = UnityEditor.AssetDatabase.FindAssets($"t:{nameof(ScriptableObjectCollection)}"); collections.Clear(); collectionGUIDs.Clear(); for (int i = 0; i < collectionsGUIDs.Length; i++) { string collectionGUID = collectionsGUIDs[i]; ScriptableObjectCollection collection = UnityEditor.AssetDatabase.LoadAssetAtPath <ScriptableObjectCollection>( UnityEditor.AssetDatabase.GUIDToAssetPath(collectionGUID)); if (collection == null) { continue; } collection.RefreshCollection(); collections.Add(collection); collectionGUIDs.Add(collection.GUID); } ObjectUtility.SetDirty(this); #endif }
public void ReloadCollections() { #if UNITY_EDITOR if (Application.isPlaying) { return; } collections.Clear(); bool changed = false; List <Type> types = TypeUtility.GetAllSubclasses(typeof(ScriptableObjectCollection)); for (int i = 0; i < types.Count; i++) { Type type = types[i]; string[] typeGUIDs = AssetDatabase.FindAssets($"t:{type.Name}"); for (int j = 0; j < typeGUIDs.Length; j++) { string typeGUID = typeGUIDs[j]; ScriptableObjectCollection collection = AssetDatabase.LoadAssetAtPath <ScriptableObjectCollection>(AssetDatabase.GUIDToAssetPath(typeGUID)); if (collection == null) { continue; } collection.RefreshCollection(); collections.Add(collection); changed = true; } } if (changed) { ObjectUtility.SetDirty(this); } ValidateGUIDs(); #endif }