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 版权协议,转载请附上原文出处链接和本声明。