Unity拓展——Project窗口拓展

  • Post author:
  • Post category:其他




Unity拓展——Project窗口拓展



1 鼠标右键单击面板

Project面板是用来存放整个工程文件信息的。这个窗口也是可以进行用户自定义拓展的。我们单击Project窗口空白的地方,就会弹出一个面板如下:

在这里插入图片描述

我们再看看Unity菜单栏,打开Assets试一试:

在这里插入图片描述

不难发现,二者具有高度一致性。因此,我们想要拓展这个面板,其实就跟拓展菜单栏方法几乎一模一样,只需如下即可:

[MenuItem("Assets/ProjectTest1")]
private static void ProjectTest1()
{
    Debug.Log("ProjectTest1");
}

这样,我们就成功在面板当中拓展了一个叫ProjectTest1的选项:

在这里插入图片描述



2. 其他拓展

其实很多拓展,方法都是相通的,比如说,给选中的对象价格按钮什么的。这个无论实在Hierarchy,还是在Project当中,方法都差不太多。比如说,我们想给在Project当中的选中的对象,加一个删除按钮,只要点击这个删除按钮,就可以把当前选中的对象删除。

首先,我们要知道,在UnityEditor的

EditorApplication

当中,专门为我们开放出一个回调:

projectWindowItemOnGUI

。这个回调,专门用来挂载一些跟project窗口UI相关的东西。我们只要对这个回调,进行相关编辑即可。根据这个思路,我们就可以写这样一个方法:

//给Project里面加一些自定义的按钮之类的
[InitializeOnLoadMethod]
private static void Init()
{
    EditorApplication.projectWindowItemOnGUI += (guid, rect) =>
    {
        //当选定project当中的某个东西时
        if (Selection.activeObject != null)
        {
            //Unity通过给Asset文件夹下方物体设置某个特定的guid来判定到底是哪个物体
            var chosen_guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(Selection.activeObject));
            //不光要对应上,而且不应为空
            if(chosen_guid == guid && !string.IsNullOrEmpty(chosen_guid))
            {
                rect.x = rect.width - 100;
                rect.width = 100;

                //创建一个用来删除某个物体的按钮
                if(GUI.Button(rect,"delete"))
                {
                    AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(Selection.activeObject));
                }
            }
        }
    };
}

这样我们就看到了这个效果:

在这里插入图片描述

当然了,你可以在相应的位置添加任意一个GUI类当中的组建,这个完全看个人需要。



版权声明:本文为johnny_love_1968原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。