protected override void OnBodyGUI() { base.OnBodyGUI(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("批处理[ " + (_root ? _root.name : "Root") + " ]下的[ " + (_componentType != null ? _componentType.FullName : "Component") + " ]组件!", MessageType.Info); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Root:", GUILayout.Width(120)); _root = EditorGUILayout.ObjectField(_root, typeof(GameObject), true) as GameObject; EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Component Filter:", GUILayout.Width(120)); _componentTypeFilter = EditorGUILayout.TextField(_componentTypeFilter); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Component:", GUILayout.Width(120)); if (GUILayout.Button(_componentType != null ? _componentType.FullName : "<None>", EditorGlobalTools.Styles.MiniPopup)) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInAllAssemblies(); gm.AddItem(new GUIContent("<None>"), _componentType == null, () => { _componentType = null; }); for (int i = 0; i < types.Count; i++) { Type type = types[i]; if (type.IsSubclassOf(typeof(Component)) && type.FullName.ToLower().Contains(_componentTypeFilter.ToLower())) { gm.AddItem(new GUIContent(type.FullName), type == _componentType, () => { _componentType = type; }); } } gm.ShowAsContext(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Include Inactive:", GUILayout.Width(120)); _includeInactive = EditorGUILayout.Toggle(_includeInactive); EditorGUILayout.EndHorizontal(); GUI.enabled = _root && _componentType != null && _selectionAddMethod != null; EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Collect")) { Selection.activeGameObject = null; Component[] components = _root.transform.GetComponentsInChildren(_componentType, _includeInactive); for (int i = 0; i < components.Length; i++) { CollectComponent(components[i]); } } EditorGUILayout.EndHorizontal(); GUI.enabled = true; }
protected override void OnBodyGUI() { base.OnBodyGUI(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("批处理[ " + (_folder ? _folder.name : "Root") + " ]文件夹下的[ " + (_objectType != null ? _objectType.FullName : "Object") + " ]对象!", MessageType.Info); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Folder:", GUILayout.Width(120)); _folder = EditorGUILayout.ObjectField(_folder, typeof(DefaultAsset), false) as DefaultAsset; EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Object Filter:", GUILayout.Width(120)); _objectTypeFilter = EditorGUILayout.TextField(_objectTypeFilter); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Object:", GUILayout.Width(120)); if (GUILayout.Button(_objectType != null ? _objectType.FullName : "<None>", EditorGlobalTools.Styles.MiniPopup)) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInAllAssemblies(); gm.AddItem(new GUIContent("<None>"), _objectType == null, () => { _objectType = null; }); for (int i = 0; i < types.Count; i++) { Type type = types[i]; if (type.IsSubclassOf(typeof(UnityEngine.Object)) && type.FullName.ToLower().Contains(_objectTypeFilter.ToLower())) { gm.AddItem(new GUIContent(type.FullName), type == _objectType, () => { _objectType = type; }); } } gm.ShowAsContext(); } EditorGUILayout.EndHorizontal(); GUI.enabled = _folder && _objectType != null && _selectionAddMethod != null; EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Collect")) { Selection.activeObject = _folder; UnityEngine.Object[] objs = Selection.GetFiltered(_objectType, SelectionMode.DeepAssets); Selection.activeObject = null; for (int i = 0; i < objs.Length; i++) { CollectObject(objs[i]); } } EditorGUILayout.EndHorizontal(); GUI.enabled = true; }