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

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);}}
}
http://www.xdnf.cn/news/13990.html

相关文章:

  • 【JVM】- 类加载与字节码结构2
  • Agent 处理流程
  • “在同一事务中“ 的含义
  • 【工具教程】批量PDF识别提取区域的内容重命名,将PDF指定区域位置的内容提取出来改名的具体操作步骤
  • 蘑菇街商品详情接口技术解析
  • Tlias-web 管理系统项目知识点复盘总结
  • 东土科技参与国家重点研发计划 ,共同研发工业智控创新技术
  • Vue里面的映射方法
  • 弹性梁:绘图、分析与可视化-AI云计算数值分析和代码验证
  • linux命令-用户与用户组
  • 什么是redis
  • 【k8s】阿里云ACK服务中GPU实例部署问题
  • QMainWindow、QDialog 和 QWidget区别
  • ubuntu 无法访问位置 error mounting 解决办法 双系统
  • 腐烂之息-(Breath of Decay VR ) 硬核VR游戏
  • OpenBayes 一周速览丨对标GPT-4o! BAGEL统一处理多模态数据理解和生成任务; 专为软件工程任务设计, Devstral自主处理复杂工程问题
  • 印度客机坠毁致波音美股盘前直线下跌​
  • Linux内核网络协议注册与初始化:从proto_register到tcp_v4_init_sock的深度解析
  • 后端开发:计算机网络、数据库常识
  • 戴尔 17G 服务器 E610 OCP千兆网卡驱动安装
  • 【 新能源汽车OBD网关全解析:原理、方案、测试与趋势】
  • 【车机显示仪表】软硬件详细方案
  • docker compose部署kafka
  • Snap宣布2026年推出AR眼镜
  • 【Erdas实验教程】019:遥感图像空间增强( 纹理分析)
  • 开源组件hive调优
  • Android 12.0 第三方应用左右两侧未全屏有黑边问题解决
  • 手机IP地址更换的影响与方法
  • 分享| 低代码建模工具-大数据挖掘建模平台白皮书
  • 中国老年健康调查(CLHLS)数据挖掘教程(1)--CLHLS简介和数据下载