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

前言

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

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

 

正文

 

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();
    }
}

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值