第3章GUI游戏界面

2019-02-15 11:55

目录

序 ............................................................................................................................................................. 2 GUI ......................................................................................................................................................... 2 GUI异军突起 ........................................................................................................................................ 6

Unity的GUI系统一直被人们所诟病,被批为落后的,过时的UI系统,笔者发现在我读的这本书上讲解的依然是这个菜单,所以笔者打算借着这个机会学习一下新的GUI系统,所以此篇读书笔记不会过多的在旧的gui系统上面花太多笔墨。

GUI

首先我其实是很反感这本书作者这样讲解游戏GUI的,这样讲解只是单纯的抄Unity文档,根本毫无意义,GUI重要的是方法和工作流。诚然我也是个初学者,我将在这篇读书笔记中讲述,我是如何使用旧的GUI系统来创建一个完整的简单的游戏标题菜单的。

Unity的旧GUI对于新手来说十分好用,快速方便,我们如果想使用一个按钮来判断事件,只需要在OnGUI中简单一句:

If(GUI.Button(Rect(Screen.width/c,Screen.height/d,Screen.width/beginwidthn,Screen.height/beginheightn),\{

//按下按钮你要做的操作 }

但是这对于大规模的游戏菜单来说绝对是毁灭性的灾难(要不然那么多的Unity游戏也不会总是使用NGUI插件了)。我尝试使用Unity的旧GUI写过菜单,我们来看看写一个简单的标题画面应该怎么做:

首先必须明白的是,标题画面最好实践是一个单独的scene,然后所有的关于菜单的操作都被放在这个空间中,无论你有多少子菜单。 下面我要做的就是这样一个菜单界面:

首先我要做的是准备这些菜单的字体,因为我在完成这个东西的时候unity并不支持显示中文,即使要支持也是相当麻烦的。于是乎,我准备了如下素材:

我的菜单无非就是这些图片的组合。

然后我创建了一个名叫title的场景,他里面只有一个Main Camera

我们要做的事情就是在这个相机的GUI层以既定的方式来绘制这些图片。在老的GUI系统为了更改GUI的风格,有个东西叫做GUISkin,这里面可是设置所有关于GUI的显示风格,包括按钮怎么显示,滚动条怎么显示等等

在这里面有一个东西叫做CustomStyle的下拉栏,在这里面可以自定义按钮风格,于是我把自己绘制的图片设置到这里面去:

这样一来,所有的东西都已经搞定了,然后我就需要开始写一个脚本来控制所有的GUI行为,JS代码如下:

#pragma strict

var titletext : GUISkin; var title : Texture; var about : Texture;

var begintextpos_xn = 1f; var begintextpos_yn = 1f; var beginwidthn = 1f; var beginheightn = 1f; var mode = 1; function OnGUI() {

GUI.skin = titletext; switch (mode) { case 1:

GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),title); var botton =

GUI.Button(Rect(Screen.width/begintextpos_xn,Screen.height/begintextpos_yn,Screen.width/beginwidthn,Screen.height/beginheightn),\

var botton1 =

GUI.Button(Rect(Screen.width/a,Screen.height/b,Screen.width/beginwidthn,Screen.height/beginheightn),\

var botton2 =

GUI.Button(Rect(Screen.width/e,Screen.height/f,Screen.width/beginwidthn,Screen.height/beginheightn),\

if(botton)

Application.LoadLevel (1);

if(botton1)

Application.Quit();

if(botton2)

mode = 2;

break;

case 2:

GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),about); var bottontomain =

GUI.Button(Rect(Screen.width/c,Screen.height/d,Screen.width/beginwidthn,Screen.height/beginheightn),\ }

}

break;

if(bottontomain||Input.GetKeyUp(KeyCode.Escape))

mode = 1;

也就是说每帧都要定义button每帧都要绘制,并且按钮和其逻辑是相互分离的,必须要由这段代码来联系起来。在这里,我们只有3个按钮,也许是非常清晰好管理的,但是如果


第3章GUI游戏界面.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:备课模板111

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: