private void FilteredResults() { _filteredGameObjects.Clear(); _filteredScriptableObjects.Clear(); _filteredObjects.Clear(); var hasFilter = !string.IsNullOrEmpty(_filter); var filter = _filter != null?_filter.ToLower() : null; if (showGameObjects) { if (hasFilter) { foreach (var instance in UniInspectEditor.GameObjectInstances) { var match = false; if (instance.Key.name.ToLower().Contains(filter)) { match = true; } else { if (instance.Value.Any(m => m.name.ToLower().Contains(filter))) { match = true; } else { var monoTypes = instance.Value.Select(m => m.GetType()).ToArray(); if (monoTypes.Any(m => m.Name.ToLower().Contains(filter))) { match = true; } else { foreach (var monoType in monoTypes) { var fields = UniInspectEditor.GetMonoFields(monoType); if (fields.Any(f => f.Name.ToLower().Contains(filter))) { match = true; } } } } } if (match) { _filteredGameObjects.Add(instance.Key); } } } else { _filteredGameObjects = UniInspectEditor.GameObjectInstances.Select(g => g.Key).ToList(); } } if (showScriptableObjects) { if (hasFilter) { foreach (var instance in UniInspectEditor.ScriptableObjectInstances) { var pass = false; if (instance.name.ToLower().Contains(filter)) { pass = true; } else { var soType = instance.GetType(); if (soType.Name.ToLower().Contains(filter)) { pass = true; } else { var fields = UniInspectEditor.GetScriptableObjectFields(soType); if (fields.Any(f => f.Name.ToLower().Contains(filter))) { pass = true; } } } if (pass) { _filteredScriptableObjects.Add(instance); } } } else { _filteredScriptableObjects = new List <ScriptableObject>(UniInspectEditor.ScriptableObjectInstances); } } _filteredObjects.AddRange(_filteredGameObjects.Select(go => go as Object)); _filteredObjects.AddRange(_filteredScriptableObjects.Select(so => so as Object)); }