引擎:unity3d 5.6.5p4
插件窗口类需要继承UnityEditor.EditorWindow,然后在AddWindow方法中创建窗口,当然还要在方法上一行加入该插件在unity菜单中的路径,例如:
public class A : EditorWindow
{
[MenuItem(“A/AAA”)]
private static void AddWindow()
{
A window = GetWindow<A>(“AAA”);
}
......
}
在OnGUI中,可以对窗口进行布局,其中:
需要水平布局的在EditorGUILayout.BeginHorizontal()和EditorGUILayout.EndHorizontal()之间添加语句,
需要垂直布局的在EditorGUILayout.BeginVertical()和EditorGUILayout.EndVertical()之间添加语句;
以垂直布局为例,添加两个按钮,A和B,如下:
Private void OnGUI()
{
EditorGUILayout.BeginVertical();
If (GUILayout.Button(“A”))
{
...
}
If (GUILayout.Button(“B”))
{
...
}
EditorGUILayout.EndVertical();
}
如果需要设置窗口默认大小则在Open中添加操作,另外,需要调整按钮大小的话,则在GUILayout.Button函数设置第二个参数,具体如下:
Private void Open()
{
this.minSize = new Vector2(200, 200);
this.maxSize = this.minSize;
}
Private void OnGUI()
{
EditorGUILayout.BeginVertical();
If (GUILayout.Button(“A”, GUILayout.Height(85)))
{
...
}
If (GUILayout.Button(“B”, GUILayout.Height(85)))
{
...
}
EditorGUILayout.EndVertical();
}
最后,需要激活场景对象的话,可以在OnGUI中,通过GameObject.Find(“xxx”)获取GameObject对象,或者通过GameObject.Find(“xxx”).GetComponent<B>()获取以xxx命名的GameObject对象的B属性/脚本,然后再用SetActive方法设置激活(true)或屏蔽(false),例如:
Private void OnGUI()
{
B b = GameObject.Find(“xxx”).GetComponent<B>();
If (b == null)
return;
EditorGUILayout.BeginVertical();
If (GUILayout.Button(“A”, GUILayout.Height(85)))
{
b.SetActive(true);
}
If (GUILayout.Button(“B”, GUILayout.Height(85)))
{
b.SetActive(false);
}
EditorGUILayout.EndVertical();
}
以上简单回顾。
参考资料:
http://www.ceeger.com/Script/GUILayout/GUILayout.Height.html