Unity-3d Day05
这两天呢 研究GUI了
感觉上呢 方法名 都挺长 看似不好学 其实全都是公式
用的时候往上搬就可以了
GUI就是图形用户界面
GUI只能编写在OnGUI⽅法中,此处通过案例,将图中的GUI实现出来
有关GUI的代码必须写在OnGUI⽅法中
OnGUI⽅法每帧执⾏两次
GUIlayout : Label 创建⼀个⾃动布局的标签
Box 创建⼀个⾃动布局的box
Toggle 创建⼀个开关按钮
HorizontalSlider 创建⼀个⽔平滑动条,可以拖动改变
在最⼩只和最⼤值之间的值
Toolbar 创建⼀个⼯具栏
觉得不是很常用自动布局的话方便 但是窗口一动 布局就跟着动了
GUI(⾃定义布局):
Button 创建⼀个按钮,⽤户点击的时候出发⼀事件
TextArea 创建多⾏⽂本区域,编辑字符
SelectionGrid 创建按钮⺴格
BeginScrollView 滚动视图的开始部分
EndScrollView 滚动视图结束部分(必须和Begin成对出现)
Window 创建⼀个弹出窗⼝
直接上代码吧,都是公式。。。。。
using UnityEngine; using System.Collections; public class GUIScript : MonoBehaviour { public GUISkin skin; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } //都得定义变量 要不不变 private bool toggle = false; private float slider = 50f; private int toolbar = 0; private string text = "请输入文字"; private Vector2 scollPosition = new Vector2(0, 0); public float x = 0; public float y = 100; public float tempx = 0; public float tempy = 0; public Texture2D texture; void OnGUI() { //水平显示 要有end GUILayout.BeginHorizontal(); GUILayout.Label("蓝鸥",GUILayout.Width(100),GUILayout.Height(100)); GUILayout.Label("宇哥"); if (GUILayout.Button("呵呵")) { //GUILayout.Label("宇哥呵呵"); print("hehe"); } //checkbox 要有变量 要不不动 GUILayout.Box("box"); GUILayout.EndHorizontal(); toggle = GUILayout.Toggle(toggle, "男"); //水平滑动条 slider = GUILayout.HorizontalSlider(slider, 0f, 100f); GUILayout.Label(slider.ToString()); //工具栏 string[] strs = { "shuibei", "baixin", "lixin" }; toolbar = GUILayout.Toolbar(toolbar, strs); //文本输入框 Rect rect = new Rect(100, 100, 100, 100); GUI.Box(rect,"lanou"); text = GUI.TextArea(new Rect(100, 200, 100, 100), text); //滚动 别忘e 框位置 滚动条位置 内容框大小 scollPosition = GUI.BeginScrollView(new Rect(0, 0, 500, 500), scollPosition,new Rect(0,0,1000,1000)); //内容位置是相对于框的位置 GUI.Button(new Rect(0, 0, 100, 100), "Button1"); GUI.Button(new Rect(0, 100, 100, 100), "Button2"); GUI.EndScrollView(); //改皮肤 带劲了啊 皮肤在unity中定义 写在前面有效 GUI.skin = skin; //点button,box动 if (GUI.Button(new Rect(0, 0, 100, 100), "你跑啊你跑啊")) { tempx = Random.Range(0, 500); tempy = Random.Range(0, 500); } x = Mathf.Lerp(x, tempx, Time.deltaTime * 2); y = Mathf.Lerp(y, tempy, Time.deltaTime * 2); GUI.Box(new Rect(x, y, 100, 100), "我跑怎么的"); } }