Unity 3D游戏开发GUI高级控制之Window控件
Window控件在游戏开发中非常常见,所有视图都需要依赖窗口来显示,可以把窗口理解为视图的父类。前面所介绍的各种各样控件游戏视图,都属于窗口的子类。游戏界面可以由若干个窗口组成,窗口又由若干个视图组成。
创建窗口时需要设定它的显示区域,在窗口中可以添加任意游戏视图控件对象,前提是组件的显示区域必须在窗口中,否则无法显示。另外,窗口中所有的坐标均采取相对坐标,相对窗口左上角的坐标。下面查看实例中的代码,代码如下所示:
#pragma strict //默认窗口位置变量 private var window0:Rect = Rect(10,10,200,200); private var window1:Rect = Rect(220,10,200,200); function OnGUI () { //在这里注册两个窗口 GUI.Window(0,window0,oneWindow,"窗口1"); GUI.Window(1,window1,twoWindow,"窗口2"); } //显示窗口1的内容 function oneWindow(windowID:int){ GUI.Box(Rect(10,50,150,50),"窗口ID"+windowID); if(GUI.Button(Rect(10,120,150,50),"Button")){ Debug.Log("窗口ID = "+windowID+"按钮被点击了"); } } //显示窗口2的内容 function twoWindow(windowID:int){ GUI.Box(Rect(10,50,150,50),"窗口ID"+windowID); if(GUI.Button(Rect(10,120,150,50),"Button")){ Debug.Log("窗口ID = "+windowID+"按钮被点击了"); } }
上述代码中,使用了GUI.window()方法注册窗口,该方法共有4个参数,第一个参数表示窗口的ID,第二个参数表示窗口显示的区域,第三个参数表示一个回调方法名称,窗口中包含的所有视图组件将写入这个方法,第四个参数表示窗口的标题名称。
程序运行起来后的结果如下所示:
<!--EndFragment-->
<!--EndFragment-->