将脚本放在Assets内的Editor文件夹里。
TestWindow.cs
using UnityEngine;
using UnityEditor;
public class TestWindow:EditorWindow{
[MenuItem("Tools/TestWindow")]
static void createTestWindow() {
var window=EditorWindow.GetWindow<TestWindow>(false,"TestWindow");
window.minSize=new Vector2(400,400);
window.Show();
}
private void OnGUI() {
if(mouseOverWindow==this){//鼠标位于当前窗口
if(Event.current.type==EventType.DragUpdated){//拖入窗口未松开鼠标
DragAndDrop.visualMode=DragAndDropVisualMode.Generic;//改变鼠标外观
}else if(Event.current.type==EventType.DragExited){//拖入窗口并松开鼠标
Focus();//获取焦点,使unity置顶(在其他窗口的前面)
//Rect rect=EditorGUILayout.GetControlRect();
//rect.Contains(Event.current.mousePosition);//可以使用鼠标位置判断进入指定区域
if(DragAndDrop.paths!=null){
int len=DragAndDrop.paths.Length;
for(int i=0;i<len;i++){
Debug.Log(DragAndDrop.paths[i]);//输出拖入的文件或文件夹路径
}
}
}
}
}
}