日落1-3之Unity3D插件窗口激活场景对象

引擎: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()之间添加语句;

以垂直布局为例,添加两个按钮,AB,如下:

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

猜你喜欢

转载自blog.csdn.net/minami_takumi/article/details/80952227