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

前言

需求是这样:从资产面板中拖拽一个文件,比如表格的xlsx吧,到某个属性面板的框框中。然后获取这个文件的路径。大概如下图所示: 

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

之前在一个网站中看到类似的教程,后来没翻到在哪里了。总之实现过程如下:

 

正文

 

1、思路

首先肯定要绘制一个文本框,然后获得他的Rect;

然后如果鼠标在拖拽中,那么判定是否拖到这个文本框里面了。

如果拖进来的时候有选中文件,并且文件符合选中条件,那么就调用API获取路径进行填写。

 

2、代码

[CustomEditor(typeof(OrginExcelData), true)]
[CanEditMultipleObjects]
public class BaseExcelDataEditor : Editor
{
     SerializedProperty Path;
    
     private void OnEnable()
     {
         Path = serializedObject.FindProperty("ExcelPath");
     }   

    public override void OnInspectorGUI()
    {
        //获得一个长500的框  
        mExcelPathRect = EditorGUILayout.GetControlRect(GUILayout.Width(500));
        EditorGUI.TextField(mExcelPathRect, curPath);
        //如果鼠标正在拖拽中或拖拽结束时,并且鼠标所在位置在文本输入框内  
        if ((Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragExited)&& mExcelPathRect.Contains(Event.current.mousePosition))
        {
            //改变鼠标的外表  
            DragAndDrop.visualMode = DragAndDropVisualMode.Generic;
            if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0)
            {
                string retPath = DragAndDrop.paths[0];
                curPath = retPath;
            }
        }
        Path.stringValue = curPath;
        serializedObject.ApplyModifiedProperties();
    }
}

 

 

 

    原文作者:魔术师Dix
    原文地址: https://blog.csdn.net/cyf649669121/article/details/89280796
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞