unity3D 编辑器通过拖拽获取文件路径
2015-01-10 00:31
239 查看
Unity3D项目开发过程中咱们难免会碰到一些需要设置Prefab路径的时候,例如某个攻击动作的特效,虽然我们最终都是通过填表来完成,如果完全手动填表那实在让人崩溃啊,碰到有的特效命名不小心填错了,那就更加无聊了,所以作为程序猿的我们肯定是要通过更加友好的方式来获取各种目录下各种文件的路径了。
我们早已经习惯了在各种地方通过拖拽来进行文件路径设置了,那么显然拖拽是非常简单又人性化的设定啊。假设我们现在有一个技能设置的编辑器,如下图:
特效路径就是我们想设置的,而且可能会在平时做一些修改,每次都自己手动输入显然不是我们想要的,那么怎么让这个TextField支持将Project视图下的文件拖拽到这个文本输入框中,并且让它自动获取我拖拽的文件的路径呢?
『技能编辑器』这整个Window其实就是通过各种小控件给拼起来的,Unity3D中默认所有控件都是支持拖拽事件的,所以我们不需要做任何设置,直接针对我们的需求开始就好了。
我们想要的是,特效路径这个Label后边跟着的这个可输入的TextField文本输入框可以接受拖拽文件的方式来进行路径的输入。那么我们需要做的就是在这个『技能编辑器』的Window中监听鼠标拖拽的事情,同时判断鼠标拖拽时鼠标的位置是否处于这个可输入的TextField文本输入框之中就OK了,上代码。
我们早已经习惯了在各种地方通过拖拽来进行文件路径设置了,那么显然拖拽是非常简单又人性化的设定啊。假设我们现在有一个技能设置的编辑器,如下图:
特效路径就是我们想设置的,而且可能会在平时做一些修改,每次都自己手动输入显然不是我们想要的,那么怎么让这个TextField支持将Project视图下的文件拖拽到这个文本输入框中,并且让它自动获取我拖拽的文件的路径呢?
『技能编辑器』这整个Window其实就是通过各种小控件给拼起来的,Unity3D中默认所有控件都是支持拖拽事件的,所以我们不需要做任何设置,直接针对我们的需求开始就好了。
我们想要的是,特效路径这个Label后边跟着的这个可输入的TextField文本输入框可以接受拖拽文件的方式来进行路径的输入。那么我们需要做的就是在这个『技能编辑器』的Window中监听鼠标拖拽的事情,同时判断鼠标拖拽时鼠标的位置是否处于这个可输入的TextField文本输入框之中就OK了,上代码。
EditorGUILayout.BeginHorizontal (); EditorGUILayout.LabelField ("特效路径", GUILayout.Width (80)); // 获得特效路径文本输入框的位置和大小参数,用于后续判断鼠标在文本输入框内使用 Rect sfxPathRect = EditorGUILayout.GetControlRect(GUILayout.Width (250)); // 用刚刚获取的文本输入框的位置和大小参数,创建一个文本输入框,用于输入特效路径 string sfxPathText = EditorGUI.TextField (sfxPathRect, meleeAttackSection.sfxPath); // 判断当前鼠标正拖拽某对象或者在拖拽的过程中松开了鼠标按键 // 同时还需要判断拖拽时鼠标所在位置处于文本输入框内 if ((Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragExited) && sfxPathRect.Contains (Event.current.mousePosition)) { // 判断是否拖拽了文件 if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0) { string sfxPath = DragAndDrop.paths [0]; // 拖拽的过程中,松开鼠标之后,拖拽操作结束,此时就可以使用获得的sfxPath变量了 if (!string.IsNullOrEmpty (sfxPath) && Event.current.type == EventType.DragExited) { DragAndDrop.AcceptDrag (); // 好了,这下想用这个sfxPath变量干嘛就干嘛吧 } } } EditorGUILayout.EndHorizontal ();
相关文章推荐
- [Unity编辑器]通过拖拽获取文件路径
- [Unity编辑器]通过拖拽获取文件路径
- 【unity editor】通过拖拽获取文件路径
- C# 通过文件路径获取文件名、扩展名等
- C#通过文件路径获取文件名
- action中通过javascript获取jsp页面中的文件上传路径
- Unity3d外部加载音频,视频,图片等资源 及根据路径获取制定格式的文件
- linux中通过文件描述符获取文件绝对路径
- 通过JS获取文件上传路径
- 使用VBS通过3种方式浏览本地文件,获取完整路径。
- SDK通过文件句柄获取文件路径
- VC下通过进程ID获取进程镜像文件路径的方法及其存在的缺陷
- Linux下获取当前进程的执行文件的绝对路径和所在目录(通过/proc/self/exe链接)
- 通过JS获取文件上传路径
- Unity3D教程:扫描全盘获取文件路径
- C#通过文件路径获取文件名
- C# 通过文件路径获取文件名
- 通过路径获取媒体文件信息
- C# 通过文件路径获取文件名、扩展名等
- C#通过文件路径获取文件名