当前位置: 首页 > news >正文

Unity编辑器-获取Projectwindow中拖拽内容的路径

参考

Unity Editor 实现给属性面板上拖拽赋值资源路径

API

Event
DragAndDrop

示例

Mono脚本

using UnityEngine;
public class TestScene : MonoBehaviour
{[SerializeField] string testName;
}

Editor脚本
重写InspectorGUI,在该函数中通过Event的Type参数获取当前的拖拽类型
拖拽中,如果鼠标指针进入目标区域,修改鼠标指针
拖拽释放,判断鼠标是否在目标区域,如果是,获取拖拽内容的路径
注意:不设置鼠标指针为通用状态无法获取拖拽对象的路径

using UnityEditor;
[CustomEditor(typeof(TestScene))]
public class TestSceneInspector : Editor
{SerializedProperty testName;private void OnEnable(){testName = serializedObject.FindProperty(nameof(testName));}public override void OnInspectorGUI(){serializedObject.Update();EditorGUILayout.PropertyField(testName, new GUIContent("测试"));if (GetDragObjectPathsInProjectWindow(GUILayoutUtility.GetLastRect(), out string[] paths)){if (paths.Length > 0)testName.stringValue = System.IO.Path.GetFileNameWithoutExtension(paths[0]);}serializedObject.ApplyModifiedProperties();}bool GetDragObjectPathsInProjectWindow(Rect targetRect, out string[] paths){//拖拽提示if (Event.current.type == EventType.DragUpdated){Event.current.Use();if (DragObjectInArea(targetRect))DragAndDrop.visualMode = DragAndDropVisualMode.Generic;//鼠标指针修改为通用拖拽模式,设置为该模式该可以获取拖拽对象的路径elseDragAndDrop.visualMode = DragAndDropVisualMode.None;//鼠标指针修改为无指示模式         }//拖拽释放并且在目标区域内if (Event.current.type == EventType.DragPerform && DragObjectInArea(targetRect)){Event.current.Use();paths = DragAndDrop.paths;return true;}else{paths = null;return false;}bool DragObjectInArea(Rect rect){return rect.Contains(Event.current.mousePosition);}}
}

相关文章:

  • 科技新底座揭幕!2025 MWC上海锚定AI+、5G融合、双区创新三大引擎
  • 人工智能时代汽车营销如何创新突破?云徙科技汽车营销智能体助力车企立足数智化转型
  • 从流量到变现:知识IP商业化的底层逻辑|创客匠人解析
  • Nginx 负载均衡、高可用及动静分离
  • RabbitMQ配置镜像
  • 监控视频云解决方案详解
  • vue3 双容器自动扩展布局 根据 内容的多少 动态定义宽度
  • matlab实现非线性Granger因果检验
  • windows使用命令行查看进程信息
  • 【Spring AI】MCP Server实现多实例部署
  • Flutter:步骤条组件
  • Flutter项目编译到鸿蒙模拟器报错
  • Flutter Android打包和发布Build APK
  • 国产数据库StarRocks在数栈轻量化数据开发的全流程实践
  • 【论文解读】OpenR:让大模型“深思熟虑”的开源框架
  • 苹果WWDC 2025 技术趋势分析
  • 【王阳明代数集合论基础】情感分析之句子的基本结构
  • 通过SMS凭据管理系统,实现数据库密码、服务器密码、Token等机密信息的临时授权和安全合规使用
  • 一名高级运维工程师,一台新服务器,安装windows系统后,在网络攻防(护网行动)形式下,应该怎么做安全加固?
  • 中小企业服务器低成本的防勒索工具:RDM防勒索
  • 广告公司名字怎么取/搜索引擎优化的简称是
  • 做日本假货的在什么网站卖好/交换友情链接的渠道
  • 顺德网站建设怎么样/石家庄seo外包的公司
  • 向祖国建设者致敬网站/上海百度整站优化服务
  • 门户网站快速制作/凡科建站官网入口
  • 长沙3合1网站建设价格/网店推广分为哪几种类型