Unity教程之-unity3d扩展Editor编辑器实现拖拽获取文件路径

 

Unity3D项目开发过程中咱们难免会碰到一些需要设置Prefab路径的时候,例如某个攻击动作的特效,虽然我们最终都是通过填表来完成,如果完全手动填表那实在让人崩溃啊,碰到有的特效命名不小心填错了,那就更加无聊了,所以作为程序猿的我们肯定是要通过更加友好的方式来获取各种目录下各种文件的路径了。我们早已经习惯了在各种地方通过拖拽来进行文件路径设置了,那么显然拖拽是非常简单又人性化的设定啊,所以下面我们来学习下载unity3d中扩展Editor编辑器实现拖拽获取文件路径,其实主要就是Event、DragAndDrop的使用了。贴上代码

using UnityEngine;
using System.Collections;
using UnityEditor;

public class TestDrag : EditorWindow {

string path;
Rect rect;

[MenuItem("Window/TestDrag")]
static void Init()
{
EditorWindow.GetWindow(typeof(TestDrag));
}

void OnGUI()
{
EditorGUILayout.LabelField("路径");
//获得一个长300的框
rect = EditorGUILayout.GetControlRect(GUILayout.Width(300));
//将上面的框作为文本输入框
path = EditorGUI.TextField(rect, path);

//如果鼠标正在拖拽中或拖拽结束时,并且鼠标所在位置在文本输入框内
if ((Event.current.type == EventType.DragUpdated
|| Event.current.type == EventType.DragExited)
&& rect.Contains(Event.current.mousePosition))
{
//改变鼠标的外表
DragAndDrop.visualMode = DragAndDropVisualMode.Generic;
if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0)
{
path = DragAndDrop.paths[0];
}
}
}
}

好了,本篇unity3d教程到此结束,下篇我们再会!