日落20180705003 - Unity插件窗口激活场景对象

xiaoxiao2021-02-28  35

系统:Windows 7

引擎:Unity 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

 

转载请注明原文地址: https://www.6miu.com/read-2621051.html

最新回复(0)