private void Awake() { _instance = this; }
public override void OnInspectorGUI() { serializedObject.Update(); _showHideManager = target as ShowHideManager; if (GUILayout.Button("添加管理")) { _showHideManager._list.Add(new ShowHideManager.GameObjectGroup()); } GUILayout.Space(30); _deleteGameObjectGroupIndex = -1; _isArea = false; for (int i = 0; i < _showHideManager._list.Count; i++) { EditorGUILayout.BeginHorizontal(); _gameObjectGroup = _showHideManager._list[i]; _gameObjectGroup._desc = EditorGUILayout.TextField(_gameObjectGroup._desc); if (GUILayout.Button("正执行")) { for (int j = 0; j < _gameObjectGroup._list.Count; j++) { _gameObjectGroup._list[j]._obj.SetActive(_gameObjectGroup._list[j]._show); } } if (GUILayout.Button("反执行")) { for (int j = 0; j < _gameObjectGroup._list.Count; j++) { _gameObjectGroup._list[j]._obj.SetActive(!_gameObjectGroup._list[j]._show); } } if (GUILayout.Button("删除")) { if (EditorUtility.DisplayDialog("警告", "你确定要删除该组对象吗?", "确定", "取消")) { _deleteGameObjectGroupIndex = i; } } EditorGUILayout.EndHorizontal(); var dragArea = GUILayoutUtility.GetRect(0f, 50f, GUILayout.ExpandWidth(true)); GUI.Box(dragArea, new GUIContent("拖动对象到此区域")); if (dragArea.Contains(Event.current.mousePosition)) { _isArea = true; _choseAreaIndex = i; } else if (Event.current.type == EventType.Repaint && _isArea == false) { _choseAreaIndex = -1; } _deleteGameObjectIndex = -1; for (int k = 0; k < _gameObjectGroup._list.Count; k++) { EditorGUILayout.BeginHorizontal(); _gameObjectGroup._list[k]._obj = (GameObject)EditorGUILayout.ObjectField(_gameObjectGroup._list[k]._obj, typeof(GameObject), true); _gameObjectGroup._list[k]._show = EditorGUILayout.Toggle(_gameObjectGroup._list[k]._show); if (GUILayout.Button("删除")) { _deleteGameObjectIndex = k; } EditorGUILayout.EndHorizontal(); } if (_deleteGameObjectIndex != -1) { _gameObjectGroup._list.RemoveAt(_deleteGameObjectIndex); } GUILayout.Space(50); } if (Event.current.type == EventType.DragExited && _choseAreaIndex != -1) { _gameObjectGroup = _showHideManager._list[_choseAreaIndex]; DragAndDrop.AcceptDrag(); if (DragAndDrop.objectReferences.Length != 0) { for (int j = 0; j < DragAndDrop.objectReferences.Length; j++) { if (DragAndDrop.objectReferences[j].GetType() == typeof(GameObject)) { if (IsExistGameObject((GameObject)DragAndDrop.objectReferences[j]) == false) { _gameObjectInformation = new ShowHideManager.GameObjectGroup.GameObjectInformation(); _gameObjectInformation._obj = (GameObject)DragAndDrop.objectReferences[j]; _gameObjectGroup._list.Add(_gameObjectInformation); } else { Debug.LogError("列表已存在该对象"); } } } } } if (_deleteGameObjectGroupIndex != -1) { _showHideManager._list.RemoveAt(_deleteGameObjectGroupIndex); } GUILayout.Space(1000); serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(_showHideManager); if (GUI.changed) { EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); } }