SDDynamicFlySwardEmiter.cs类中会去定义pathList以及prefabPath
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using rkt;
[CustomEditor(typeof(SDDynamicFlySwardEmiter))]
public class SDDynamicFlySwardEmiterEditor : Editor
{
SDDynamicFlySwardEmiter self;
public List<Rect> pathRect = new List<Rect>();
public Rect singleRect;
public List<string> pathList = new List<string>();
public void Awake()
{
self = target as SDDynamicFlySwardEmiter;
pathList.Clear();
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
GUILayout.BeginVertical();
GUILayout.Label("预设路径(单个弹道)");
this.singleRect = EditorGUILayout.GetControlRect(GUILayout.Width(500));
self.prefabPath = EditorGUI.TextField(singleRect, self.prefabPath);
if ((Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragExited) &&
singleRect.Contains(Event.current.mousePosition))
{
//改变鼠标的外表
DragAndDrop.visualMode = DragAndDropVisualMode.Generic;
if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0)
{
string retPath = DragAndDrop.paths[0];
self.prefabPath = retPath;
}
}
GUILayout.EndVertical();
GUILayout.BeginHorizontal();
GUILayout.Label("预设路径(多弹道)");
if (self.pathList == null)
{
self.pathList = new List<string>();
}
if(GUILayout.Button("+"))
{
self.pathList.Add("");
pathRect.Add(new Rect());
}
if(GUILayout.Button("-"))
{
self.pathList.RemoveAt(self.pathList.Count - 1);
pathRect.RemoveAt(pathRect.Count - 1);
}
GUILayout.EndHorizontal();
if (pathRect == null || pathRect.Count == 0)
{
for(int i = 0; i < self.pathList.Count;i++)
{
pathRect.Add(new Rect());
}
}
if(self.pathList != null)
{
for (int i = 0; i < self.pathList.Count; i++)
{
pathRect[i] = EditorGUILayout.GetControlRect(GUILayout.Width(500));
self.pathList[i] = EditorGUI.TextField(pathRect[i], self.pathList[i]);
if ((Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragExited) &&
pathRect[i].Contains(Event.current.mousePosition))
{
//改变鼠标的外表
DragAndDrop.visualMode = DragAndDropVisualMode.Generic;
if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0)
{
string retPath = DragAndDrop.paths[0];
self.pathList[i] = retPath;
}
}
}
}
}
}