public static void Invalidate(GameObject gameObject) { IsoSpriteSorting sortingComp = s_dicInstanceSpriteList.Keys.FirstOrDefault(x => x.gameObject == gameObject); if (sortingComp) { sortingComp.Invalidate(); } }
public override void OnInspectorGUI() { IsoSpriteSorting myTarget = (IsoSpriteSorting)target; serializedObject.Update(); EditorGUILayout.Space(); m_showStatistics = EditorGUILayout.Foldout(m_showStatistics, "Show Statistics"); if (m_showStatistics) { GUIStyle style = new GUIStyle(); style.richText = true; EditorGUILayout.TextArea(myTarget.GetStatistics(), style); Repaint(); } int iVal = PlayerPrefs.GetInt(IsoSpriteSorting.k_IntParam_ExecuteInEditMode, 1); bool bVal = EditorGUILayout.ToggleLeft("Execute in Edit Mode", iVal != 0, EditorStyles.boldLabel); PlayerPrefs.SetInt(IsoSpriteSorting.k_IntParam_ExecuteInEditMode, bVal ? 1 : 0); EditorGUILayout.PropertyField(serializedObject.FindProperty("SortingAxis"), new GUIContent("Sorting Axis", "Axis used for sorting")); EditorGUILayout.PropertyField(serializedObject.FindProperty("SorterPositionOffset"), new GUIContent("Sorting Offset", "Position used for sorting, relative to gameobject position. Change it in the editor dragging the white dot square.")); EditorGUILayout.PropertyField(serializedObject.FindProperty("IncludeInactiveRenderer"), new GUIContent("Include Inactive Renderers", "If it's invalidated and IncludeInactiveRenderer is true, inactive renderers will be taking into account.")); EditorGUILayout.HelpBox("Invalidate when adding or removing any renderer.\nInvalidateAll invalidates all objects.", MessageType.Info); if (GUILayout.Button("Invalidate")) { myTarget.Invalidate(); } if (GUILayout.Button("InvalidateAll")) { IsoSpriteSorting.InvalidateAll(); } if (GUI.changed) { SceneView.RepaintAll(); Undo.RecordObject(target, "Updated Sorting Settings"); serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(target); } }