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.pswp.cn/bicheng/84915.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84915.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84915.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

重要的城市(圖論 最短路)

分析 a ≠ b的從a到B的最短路,才有重要城市。 求出最短路,才能確定重要城市。 是多源最短路,n ≤ 200,可用Floyd。 若a到b,只有一條最短路,那么 a到b的路徑上的點(除了a、b)都是…

50種3D效果演示(OpenGL)

效果: 一、只需打開命令行(Windows 可用 cmd),輸入: pip install PyQt5 PyOpenGL numpy二、用命令行進入保存 .py 文件的目錄,運行: python openGL_3d_demo.py三、建立python文件命名openGL_3…

Java大模型開發入門 (6/15):對話的靈魂 - 深入理解LangChain4j中的模型、提示和解析器

前言 在上一篇文章中,我們見證了AiService注解的驚人威力。僅僅通過定義一個Java接口,我們就實現了一個功能完備的AI聊天服務。這感覺就像魔法一樣! 但作為專業的工程師,我們知道“任何足夠先進的技術,都與魔法無異”…

用Rust如何構建高性能爬蟲

習慣了使用Python來寫爬蟲,如果使用Rust需要有哪些考量? 根據我了解的Rust 在性能、資源效率和并發處理方面完勝 Python,但是 Python 在開發速度和生態成熟度上占優。所以說,具體用那種模式,結合你項目特點做個詳細的…

CentOS7報錯:Cannot find a valid baseurl for repo: base/7/x86_64

這個錯誤通常出現在 CentOS/RHEL 7 系統中,當你嘗試運行 yum update 或 yum install 時,系統無法連接到默認的軟件倉庫(repository)。 可能的原因 網絡連接問題:系統無法訪問互聯網或倉庫服務器。錯誤的倉庫配置&…

云平臺|Linux部分指令

目錄 云平臺 操作系統(鏡像) 管理應用實例 遠程連接 遠程連接工具 linux相關命令(重點) 云平臺 1、阿里云(學生免費,不包流量 流量0.8---1G) 2、騰訊云(搶) 3、華…

AI首次自主發現人工生命

轉: 近日,人工智能領域迎來了一項革命性的突破。Transformer 論文作者之一的 Llion Jones 與前谷歌研究人員 David Ha 共同創立的人工智能公司 Sakana AI,聯合MIT、OpenAI、瑞士AI實驗室IDSIA等機構的研究人員,共同提出了一種名為…

Day.31

變量類型: name: str "Alice" age: int 30 height: float 1.75 is_student: bool False 注解: def add(a: int, b: int) -> int: return a b def greet(name: str) -> None: print(f"Hello, {name}") 定義矩形類&a…

光譜數據分析的方法有哪些?

光譜數據分析是通過特征光譜識別物質結構與成分的核心技術,其標準化流程如下: ?一、數據預處理?(消除干擾噪聲) ?去噪平滑? Savitzky-Golay濾波:保留光譜特征峰形,消除高頻噪聲。 移動平均法&#…

RabbitMQ的使用--Spring AMQP(更新中)

1.首先是創建項目 在一個父工程 mq_demo 的基礎上建立兩個子模塊,生產者模塊publisher,消費者模塊 consumer 創建項目: 建立成功: 刪除多余文件 創建子模塊1:publisher(生產者模塊) 右鍵---…

DAY 31 文件的規范拆分和寫法

浙大疏錦行 今日的示例代碼包含2個部分 notebook文件夾內的ipynb文件,介紹下今天的思路項目文件夾中其他部分:拆分后的信貸項目,學習下如何拆分的,未來你看到的很多大項目都是類似的拆分方法 知識點回顧 規范的文件命名規范的文件…

EtherCAT至TCP/IP異構網絡互聯:施耐德M580 PLC對接倍福CX5140解決方案

一、項目背景與需求 某智能工廠致力于打造高度自動化的生產流水線,其中部分核心設備采用EtherCAT協議進行通信,以實現高速、高精度的控制,例如基于EtherCAT總線的倍福(Beckhoff)CX5140PLC,它能夠快速響應設…

[學習] FIR多項濾波器的數學原理詳解:從多相分解到高效實現(完整仿真代碼)

FIR多項濾波器的數學原理詳解:從多相分解到高效實現 文章目錄 FIR多項濾波器的數學原理詳解:從多相分解到高效實現引言一、FIR濾波器基礎與多相分解原理1.1 FIR濾波器數學模型1.2 多相分解的數學推導1.3 多相分解的物理意義 二、插值應用中的數學原理2.1…

Java并發編程實戰 Day 22:高性能無鎖編程技術

【Java并發編程實戰 Day 22】高性能無鎖編程技術 文章簡述 在高并發場景下,傳統的鎖機制(如synchronized、ReentrantLock)雖然能夠保證線程安全,但在高競爭環境下容易引發性能瓶頸。本文深入探討無鎖編程技術,重點介紹…

打破語言壁壘!DHTMLX Gantt 與 Scheduler 文檔正式上線中文等多語言版本!

你還在為英文技術文檔望而卻步嗎?現在好消息來了!DHTMLX 團隊宣布,其兩款明星組件——DHTMLX Gantt(甘特圖)與 DHTMLX Scheduler(日程排程器)的官方文檔,現已全面支持中文、德語、韓…

無監督 vs 有監督的本質區別

一、無監督 vs 有監督的本質區別 1. 無監督學習 定義:數據中沒有人為標注的 “正確答案”(如類別標簽、目標值),模型需自己發現數據中的模式。任務目標:學習數據的分布規律、結構或生成邏輯。例子: 文本續…

【Linux】初見,進程概念

前言: 上文我們講到了Linux下的第一個程序:進度條 【Linux】LInux下第一個程序:進度條-CSDN博客 本文我們來講一講Linux中下一個非常重要的東西:進程 1.馮諾依曼體系結構 我們所見的大部分計算機都是遵循的馮諾依曼體系結構…

Linux進程間通信(IPC)詳解:從入門到理解

引言 作為一名C開發初學者,理解Linux下的進程間通信(Inter-Process Communication,簡稱IPC)機制是非常重要的一步。本文將用通俗易懂的語言,配合直觀的圖示,幫助你理解Linux進程間通信的基本概念和各種實現…

SQL進階之旅 Day 27:存儲過程與函數高級應用

【SQL進階之旅 Day 27】存儲過程與函數高級應用 文章簡述 在數據庫開發中,存儲過程和函數是實現復雜業務邏輯、提高代碼復用性和提升系統性能的重要工具。本文作為“SQL進階之旅”系列的第27天,深入探討存儲過程與函數的高級應用,涵蓋其設計…

泰國零售巨頭 CJ Express 借助 SAP 內存數據庫實現高效數據管理

泰國 CJ Express 運用 SAP 內存數據庫有效控制數據增長案例 “Datavard Outboard 操作簡便、配置輕松,我們得以在生產系統上完成數據歸檔,成功將約 730GB 數據遷移至 Hadoop 集群。”——K. Jak,J Express 技術服務經理 關于 CJ Express …