protected void DrawList <T>(GUIContent uIContent, Processer <T> processer) where T : Component { EditorGUILayout.BeginVertical(EditorStyles.helpBox); { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(uIContent.text, GUILayout.Width(45)); List <T> tempObj = DragAreaGetObject.GetOjbect <T>("(拖到这里来,可以多选)"); foreach (var comp in tempObj) { if (!processer.targets.Contains(comp)) { Undo.RecordObject(processer, "TCameraEditorWindow add " + typeof(T).Name); processer.targets.Add(comp); EditorUtility.SetDirty(processer); } } if (GUILayout.Button("清理", GUILayout.Width(40))) { Undo.RecordObject(processer, "TCameraEditorWindow clear " + typeof(T).Name); processer.targets.Clear(); EditorUtility.SetDirty(processer); } EditorGUILayout.EndHorizontal(); if (processer.targets.Count > 0) { for (int i = 0; i < processer.targets.Count; i++) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(49); processer.targets[i] = EditorGUILayout.ObjectField(processer.targets[i], typeof(T), true) as T; if (GUILayout.Button("删除", GUILayout.Width(40))) { Undo.RecordObject(processer, "TCameraEditorWindow delete " + typeof(T).Name); processer.targets.RemoveAt(i); i--; EditorUtility.SetDirty(processer); } EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndVertical(); } }
protected void DrawList <T>(string title, Processer <T> processer) where T : Component { DrawList <T>(new GUIContent(title), processer); }