继续昨天的文章,在开始今天的文章以前我们来回顾下上一篇文章中的内容:
1、所有的Unity3D脚本都继承自MonoBehaviour
2、Start()方法是脚本的初始化方法,Update()方法是用于更新逻辑,由系统每隔一段时间自已调用
3、OnGUI()方法用于绘制界面GUI,所有界面相关的工作都要在这里完成
4、GUI.Button()方法用于设置一个按钮,当返回值为True时表示按钮按下
5、GUI.Lable()方法用于设置一个标签
6、transform为当前脚本所绑定对象的变换模型
7、transform.Rotate()方法用于设置模型旋转
8、transform.Translate()方法用于设置模型平移
9、Time.deltaTime该值为只读属性,表示完成最后一帧的时间,单位为秒
10、 Vector3表示一个三维向量,用于描述模型在空间中的位置、平移量、旋转量
11、Rect表示一个矩形类,用于描述GUI控件绘制的位置和大小
好,现在我们来开始今天的内容,今天的内容是GUI。今天我们的界面采取的是在OnGUI()方法中绘制的方法,所以游戏场景中只有一个Camera,下面我们来一起看脚本文件:
using UnityEngine;
using System.Collections;
public class GUIScripts : MonoBehaviour {
public Texture mTexture;
public string Description;
private int ScreenWidth;
private int ScreenHeight;
private float SliderValue=0;
private Vector2 ScrollPosition;
private Rect mWindow;
void Start ()
{
//Get ScreenWidth and ScreenHeight
ScreenWidth=Screen.width;
ScreenHeight=Screen.height;
//Init ScrollView Position
ScrollPosition[0]=50;
ScrollPosition[1]=50;
//Init Window
mWindow=new Rect(350,200,550,300);
}
void Update () {
}
void OnGUI()
{
GUI.Label(new Rect(100,10,200,30),Description);
GUI.Label(new Rect(100,40,200,30),"Screen:"+"Width="+ScreenWidth+","+"Height="+ScreenHeight);
//When Button Press
if(GUI.Button(new Rect(100,70,100,30),"Button"))
{
Description="You have pressed the Button";
GUI.backgroundColor=Color.red;
}
//Create Slider
SliderValue=GUI.HorizontalSlider(new Rect(100,120,200,50),SliderValue,0,100);
GUI.Label(new Rect(100,150,200,30),"Progress is:"+SliderValue);
//Create ScrollView
ScrollPosition=GUI.BeginScrollView(new Rect(100,200,200,400),ScrollPosition,new Rect(0,0,ScreenWidth,ScreenHeight),true,true);
GUI.Label(new Rect(0,0,mTexture.width,mTexture.height),mTexture);
GUI.EndScrollView();
//Create Window
GUI.Window(0,mWindow,InitWindow,"Window");
}
void InitWindow(int ID)
{
GUI.Label(new Rect(20,20,200,30),"This is a label in Window");
}
}
在这个类中,我们定义了两个公有的字段mTexture和Description,在Unity3D中,所有脚本中的公有字段可以像属性一样直接在游戏编辑器中进行设置:
在Start()方法中我们获取了屏幕的高度和宽度、初始化了一个ScrollView的参数数组和一个窗口Window;而在OnGUI()方法中我们绘制了两个标签,其中一个标签显示了我们设置的Description字段,一个标签则显示了我们在Start()方法中获得的屏幕宽度和高度。具体我们来看下面的截图:
现在当我们点击按钮的时候,第一个标签的文本内容会变成You have pressed the Button,当我们滑动滑块,下面会显示滑块对应的值。在下面的ScroolView中我们绘制了一张贴图,并通过水平、垂直滚动条来实现贴图的滚动显示,该贴图来自于我们的mTexture字段来指定,而右边则是一个Window,显示了我们设置的文本内容。其中GUI.Window()方法的第一个参数是窗体的ID、第二个参数是显示窗体的矩形,第三个参数是初始化窗体的方法,第四个参数是窗体的名字。
这就是我今天要为大家分享的内容,当然这只是GUI控件的部分内容,剩下的部分大家可以参照这个例子来自己学习。如果大家经常做Android或者WPF的界面的话,一定知道,在界面设计中,通常有两种类型的控件,一种是内容控件,比如我们今天提到的这些,还有一种是布局控件,通过布局控件我们可以更好的布局界面,这个内容我们放在后面来讲,希望大家继续关注我的博客,好了,今天的内容就是这样了,谢谢大家!