GUI基础:
方法:Update(),受当前渲染效率影响,有时快有时慢,帧率会变化,Update被调用的时间间隔就发生变化,Time.deltaTime获得自上次Update以来经历的时间,只应该在Update()中使用deltaTime,OnGUI等里面不要使用
方法FixedUpdate():固定时间间隔被调用,通过Edit->ProjectSetting->time设置,一般把控制运动的代码写到FixedUpdate()中,避免跳帧的感觉出现,Time.fixedDeltaTime获得固定时间间隔
方法OnGUI():GUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI
public class GUITest : MonoBehaviour { string str1; private bool isClick; void Start() { str1 = ""; isClick = false; } void OnGUI() { GUILayout.Label("欢迎来到Mr.D的世界"); //帧:每一帧都会擦除上一帧的内容,并将内容重新绘制 str1 = GUILayout.TextField(str1, GUILayout.Width(100)); //按钮 if(GUILayout.Button("点击", GUILayout.Width(100)))//当按钮被点击了,返回true { Debug.Log(1); isClick = true; } if(isClick) { GUILayout.Label("按钮被点击了"); } } }
注意:控件也是系统定义好的类型,但是在GUI中并不是类实例化得到对象,而只是绘制,要区别于.Net中的控件
GUI常用控件
***文本域:void GUILayout.Label(string)
***文本框:string GUILayout.TextField(string)
***密码框:string GUILayout.PassworldField(pwd,'*'),第二个参数为掩码字符
***按钮:Button只有鼠标抬起才会返回true,这样用Button做发射子弹就不能按下一直发射,可以使用RepeatButton,这样按下期间可以一直发射子弹,也就是返回true
***Tab页:selectedToolBarld = GUILayout.Toolbar(selectedToolBarld.new string[]{"装备","经验","队友"}); 返回值为点击的按钮的序号
***复选框:isMuted = GUILayout.Toggel(isMuted,"静音");
***多行文本框:msgBody = GUILayout.TextArea(msgBody);