Unity拓展——Project窗口拓展

2023-11-15

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类当中的组建,这个完全看个人需要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity拓展——Project窗口拓展 的相关文章

  • 树莓派初始使用相关问题及解决方法

    1 SSH连接 网线连接电脑 在无线图标上右键 打开 网络和internet设置 更改适配器设置 在WLAN上面右键 选择属性 共享 勾上 在cmd里面 可以输入 ping raspberrypi local 若显示不是ip 则ping 4

随机推荐