Unity3d-GUI 入门 这一段将解释UnityGUI 控制所需的脚本。 UnityGUI 控制 UnityGUI 控制是利用一类被称为 OnGUI()的函数,只要在控制脚本激活的状态下,OnGUI()函数可以在每帧调用,就像 Update( )函数一样。 GUI 控制在结构上相当简单,这种结构在下面这个例子中十分明显: /* Example level loader */ function OnGUI () {// Make a background box GUI.Box (Rect (10,10,100,90), "Loader Menu"); // Make the first button. If it is pressed, Application.Loadlevel (1) will be executed if (GUI.Button (Rect (20,40,80,20), "Level 1")) { Application.LoadLevel (1); } // Make the second button. if (GUI.Button (Rect (20,70,80,20), "Level 2")) { Application.LoadLevel (2); } } 这个例子是一个完整的,功能层的装载,如果你把这段脚本复制粘贴到 GameObject 上,在 Play 模式下你将会看到如下的菜单出现。 这个装载菜单是由例子中的代码创建的。 下面让我们看一下这个例子中代码的细节: 在GUI 的第一行中,GUI.BOX (Rect(10,10,100,90),”Loader Menu”);通过头文本“Loader Menu”显示一个Box 控制,它通过一个典型的GUI 控制定义,这样我们可以在第一时间解释。 在GUI 的下一行中是一个Button 控制定义,要注意它与 BOX 控制之间细微的差别。确切的说,整个Button 定义放置在一个if 语句中。当游戏在运行中并且按钮按下,if 语句返回一个true,并且 if 中的代码被执行。 当 OnGUI()代码在每一帧被调用的时候,你不必明确的创建或去除 GUI 控制,定义控制的代码同时也创建了它。如果你需要在一个特定的时间显示控制,你可以利用任何一种描述逻辑来做。 /* Flashing button example */ function OnGUI () { if (Time.time % 2 < 1) { if (GUI.Button (Rect (10,10,200,20), "Meet the flashing button")) { print ("You clicked me!"); } } } 这里,GUI.Button()只有在其它时间上才会被调用,所以按钮会出现或消失,自然地,用户只有在在按钮可见的情况下才能按下它。 就像你所看见的,当 GUI 控制显示和工作时,你可以利用任何希望的逻辑去控制。现在,我们来详细的研究每个控制定义。 Anatomy of a Control (控制的解剖) 当GUI 控制定义时,这里有三种关键信息: Type(...