public static bool CheckForNullReferences(Func <NullReference, bool> filter) { var detector = new NullReferenceDetector(); var nullReferences = detector.FindAllNullReferences( PreferencesSerialization.LoadPrefabList(), filter, PreferencesSerialization.LoadIgnoreList()) .ToList(); foreach (var nullReference in nullReferences) { var fieldName = ObjectNames.NicifyVariableName(nullReference.FieldName); var color = ColorFor(nullReference); var message = string.Format("Null reference found in <b>{0}</b> > <b>{1}</b> > <color={2}><b>{3}</b></color>\n", nullReference.GameObjectName, nullReference.ComponentName, color, fieldName); Debug.Log(message, nullReference.GameObject); } return(nullReferences.Any()); }
/// <summary> /// Do the UI elements for the ignore list /// </summary> private static void HandleIgnoreListPreferences() { if (_ignoreList == null) { _ignoreList = PreferencesSerialization .LoadIgnoreList() .ToList(); } EditorGUILayout.LabelField("Ignore list - enter the name of a GameObject to ignore when scanning (case sensitive)"); GUILayout.Space(5); var rect = EditorGUILayout.BeginHorizontal(); rect = new Rect(rect.x, rect.y - CellMargin, rect.width, 10 + CellMargin); EditorGUI.DrawRect(new Rect(rect.x, rect.y, rect.width, 55 + CellMargin * 2f), new Color(0.5f, 0.5f, 0.5f, 0.3f));//the drawn rectangle is bigger than the actual rectangle to include the buttons EditorGUI.LabelField(rect, "Use +/- buttons to increase or decrease number of items in ignore list: (" + _ignoreList.Count.ToString() + ")"); EditorGUILayout.EndHorizontal(); GUILayout.Space(10); if (GUILayout.Button("+", GUILayout.Width(40))) { var blacklistItem = new BlacklistItem(string.Empty, ignoreChildren: false); _ignoreList.Add(blacklistItem); } if (GUILayout.Button("-", GUILayout.Width(40)) && _ignoreList.Count > 0) { _ignoreList.RemoveAt(_ignoreList.Count - 1); _dirtyIgnoreList = true; } GUILayout.Space(18); if (_ignoreList.Count != 0) { // Handle UI and save changes to local ignoreList for (int i = 0; i < _ignoreList.Count; i++) { _ignoreList[i] = HandleIndividualIgnoreItem(_ignoreList[i]); } } // Save the inputs, if anything changed if (_dirtyIgnoreList) { PreferencesSerialization.SaveIgnoreList(_ignoreList); _dirtyIgnoreList = false; } }