Unity3D开发编程实战学习资料第三讲:游戏GUI界面(一)-GUI控件、布局

合集下载

Unity3D界面介绍

Unity3D界面介绍

Unity3D编辑器界面介绍
可以调节右上角的Layout来调节布局:
4个是自带的固定布局,也可以自己调节好然后通过Save Layout来添加自己的界面布局:
基本操作:
点击鼠标滑轮拖动:移动左右的
点击鼠标右键拖动:调整视野方向(围绕焦点旋转视野)注:
1.暂时只发现在3D效果有用,2D变成左右移动
2.在右键的同时可以使用WSAD来进行拉近、远离和左右移动
转动鼠标滑轮:拉近和远离
QWER分别进行移动场景、移动游戏对象、旋转游戏对象、缩放游戏对象的用法(也就是依次是左上角这几个功能)
导入资源包:Assets-->Import Package(自带几个基本的资源包,想要更多的只能自己找了)
狗刨学习网更多资源免费下载使用。

Unity3D界面功能操作讲解

Unity3D界面功能操作讲解

Unity3D界⾯功能操作讲解原创⽂章如需转载请注明:转载⾃本⽂链接地址:Hierarchy 层次视图:层次视图(Hierarchy)包含了每⼀个当前场景的所有游戏对象(GameObject)。

其中⼀些是资源⽂件的实例,如3D模型和其他预制物体(Prefab)的实例。

您可以在层次结构视图中选择对象或者⽣成对象。

当在场景中增加或者删除对象,层次结构视图中相应的对象则会出现或消失。

Unity使⽤⽗对象的概念。

要想让⼀个游戏对象成为另⼀个的⼦对象,只需在层次视图中把它拖到另⼀个上即可。

⼀个⼦对象将继承其⽗对象的移动和旋转属性。

(在层级视图⾯板展开和折叠⽗对象来查看它的⼦对象,不会影响游戏。

)Scene View 场景视图:场景视图(Scene View)是交互式沙盒,可以使⽤它来选择和布置环境、玩家、摄像机、敌⼈和所有其他游戏对象。

在层次视图(Hierarchy)中选择某物体按下“F健(Frame Selected)”,可以在场景视图(Scene View)快速找到该物体。

Project ⼯程视图:每个Unity的项⽬包含⼀个资源⽂件夹。

此⽂件夹的内容呈现在项⽬视图。

这⾥存放着你游戏的所有资源,⽐如场景、脚本、三维模型、纹理、⾳频⽂件和预制组件。

如果你在项⽬视图⾥右击任何资源,你都可以在资源管理器中(在Mac系统中是Reveal in Finder)找到这些真正的⽂件本⾝。

重要提⽰:不要使⽤操作系统来移动项⽬资源,因为这将破坏与资源相关的⼀些元数据。

你应该始终使⽤项⽬视图来组织⾃⼰的资源。

要添加资源到你的项⽬中,你可以拖动操作系统的任何⽂件到项⽬视图,或者使⽤Assets » Import New Asset导⼊新资源。

你的资源现在可以在你的游戏中使⽤了。

有些游戏资源必须从Unity内部建⽴。

要做到这⼀点,使⽤Create下拉菜单,或通过右键然后点击 » Create来创建。

这将允许你添加脚本、预制物体(Prefab)、或⽂件夹让您的项⽬组织有序。

Unity3D游戏制作操作方法及界面详解

Unity3D游戏制作操作方法及界面详解

Unity3D游戏制作操作方法及界面详解Unity3D是一款功能强大且广泛使用的游戏开发引擎,为开发者提供了丰富的操作方法和良好的界面设计。

本文将详细介绍Unity3D游戏制作的操作方法以及界面布局,帮助初学者快速上手和了解该引擎的使用。

一、项目创建与导航在打开Unity3D软件后,首先需要创建一个新项目。

点击菜单栏上的"File",然后选择"New Project"。

在弹出的窗口中,填写项目名称、存储位置等信息,点击"Create"按钮即可创建新项目。

创建完成后,Unity3D的界面会出现在你的面前。

界面主要由场景窗口、项目窗口、检视窗口和层次窗口组成。

场景窗口用于显示游戏的实时场景,项目窗口用于显示项目目录和资源文件,检视窗口显示当前选中对象的属性,层次窗口用于显示游戏对象的层次结构。

二、操作方法1. 场景操作:在场景窗口中,可以通过鼠标和键盘进行多种场景操作。

如使用鼠标右键进行视角旋转和移动,使用鼠标滚轮进行缩放,按住鼠标右键加上W、S、A、D键进行场景平移等。

通过这些操作,可以快速浏览和定位到不同的场景位置。

2. 对象创建与编辑:在项目窗口中,可以创建游戏所需的对象和资源。

右键点击项目窗口中的某个文件夹,选择"Create",然后选择相应的对象或资源进行创建。

创建完成后,可以在场景窗口中对创建的对象进行编辑,如移动、旋转、缩放等操作。

3. 组件添加与调整:在检视窗口中,可以为选中的游戏对象添加组件并调整其属性。

例如,选中一个物体,然后在检视窗口中点击"Add Component"按钮,就可以添加脚本、材质等组件。

同时,检视窗口还可以对组件的各种属性进行调整,以实现特定的功能需求。

4. 脚本编写与调试:Unity3D支持C#脚本编写,用于实现游戏逻辑和功能。

在项目窗口中的某个文件夹中创建脚本文件,并在检视窗口中选择需要添加脚本的游戏对象。

第3章 Unity3D引擎的脚本编程--3.2图形用户界面UGUI

第3章 Unity3D引擎的脚本编程--3.2图形用户界面UGUI

3. 文本Text
文本是UI中很常见的组件 ,在Hierarchy面板中单击鼠标右键 ,选择“UI ”→“Text ”,创建一 个Text类的对象 ,其会被自动添加到Canvas下。
Text组件如图所示 ,在Inspector面板中的Text中 ,可输入需要显示的文字 , 设置字体 、大 小 、对齐方式 、颜色等。
4. 按钮Button
在图形用户界面中 ,按钮是交互性很强的控件 ,按钮响应单击事件 ,如常用的确定按钮和 取消按钮 。在Hierarchy面板中单击鼠标右键 ,选择“UI ”>“Button ”,创建一个Button类的对象 ,其 自动添加到Canvas之下 。Button控件默认包括一个文本控件Text ,用来显示按钮上的文字 ,Text元 素是可选的 ,若按钮是以图像的形式呈现 , 则可删除此Text元素。
6 . 滑 块 Slider
默认的Slider 由4个游戏对象组成 , Slider组件如图3-39所示 ,包括 Slider(滑块)本体 、Background(背景图像) 、Fill(填充)和Handle(滑动 柄) 。
例如 , 在音乐开关旁边增加一个滑块来调节音量大小 , 具体操作步骤 如下:
选中“Bar ”,单击鼠标右键 ,在弹出的快捷菜单中选择“Create Empty ”,创建空物 体 ,将其改名为item;
在item之下,新建3个图像对象 ,分别对应icon冷却图标、buffer蒙版和frame图标边 框 。将准备好的3张图像拖曳到对应的“Source Image”中,并按顺序叠放,技能冷却图标 界面如图所示。
例如 , 在背景中添加一个“确定 ”按钮 , 通过图像切换呈现按钮的不同状态 。 具体操作步骤如下:
(1)在Hierarchy面板中单击鼠标右键 ,选择“UI ”→“Button ”,创建一个Button类的对象 ,将按钮改名为 ComformBt,并调整按钮的大小和位置。

unity3d游戏开发之GUI的使用

unity3d游戏开发之GUI的使用

阅读使人快乐,成长需要时间GUI是图形用户界面(Graphical User Interface)的缩写和简称,又叫图形用户接口。

听起来好像很专业的感觉,其实我们每天都在接触。

比如浏览器上面的前进、后退、收藏按钮、地址栏、右键菜单,甚至整个浏览器窗口都可以叫GUI。

而通常人们眼中的黑客高手,都是喜欢在一个全是字符的屏幕上啪啪啪飞快地键入一些晦涩难懂的字母,然后自称极其安全的某某防火墙系统就被攻破了。

这种界面正好与GUI 相对,叫做命令行界面,CLI(Command-Line Interface)。

作为次世代游戏引擎,制作的游戏当然不会用字符界面来显示各种信息。

虽然曾经的文字类的MUD游戏被誉为一代经典,MUD –Multiple User Domain,多用户交流领域,现在北大还开着此类游戏服务器。

但这样的游戏已经小众化了,并不符合人们日渐增长的对图形界面的高要求。

正如现在很少有家庭用户再用DOS/Linux系统了,Windows/MacOSX已经成了标配,甚至Linux都有了ubuntu,接下来还有可能是iOS、Android、Win8这类以触摸为主要操作的系统。

因此GUI组件就应运而生了,Unity中有两个常用的GUI组件,GUI Text 和GUI Texture。

顾名思义前者是用来显示文本的,后者则是用来显示贴图。

以魔兽世界里的头像为例,如果我们要制作这样的效果,那么玩家的名字和等级都可以用GUI Text来表现,而头像和血条,还有那些边框则都可以用GUI Texture来表现。

于是用Wow Model Viewer挖了半天,找到以下素材,准备开工山寨一个^_^。

∙原型头像一枚,懒得再上游戏里截图再修改了。

∙血条纹理一枚,游戏里的进度条都靠它来表现了。

∙头像框体一枚,嗯,它就是一个框而已。

∙等级框体一枚,嗯……同上。

将资源井然有序地分类存放是个良好的习惯,也是项目的第一步。

把这几个贴图全都拖到”Textures/GUI“目录下面,并选中它们把Texture Type更改为GUI(可以按住Ctrl 多选,一并更改)。

unity新手入门之 GUI常用控件

unity新手入门之 GUI常用控件

//GUI基础控件privatevar fTime:int; //定义时间计数器变量(测试长按按钮)privatevar str:String; //定义提示信息变量var pic:Texture2D; //定义按钮贴图对象var stringToEdit1: String = "单行文本框"; //定义单行输入框的预置内容var stringToEdit2: String = "多行文本框"; //定义多行输入框的预置内容var passwordToEdit: String = ""; //定义密码输入框的预置内容privatevar toggleTxt: boolean = false; //定义开关的初始状态privatevar tstr:String; //定义开关提示信息变量var toolbarInt: int = 0; //定义工具栏初始序号var toolbarStrings: String[] = ["1", "2", "3"]; //定义工具栏初始值var selGridInt: int = 0; //定义按钮网格初始序号var selStrings: String[] = ["Grid 1", "Grid 2", "Grid 3", "Grid 4"]; //定义按钮网格初始值var hSliderValue : float = 0.0; //定义水平滑动条初始值var vSliderValue : float = 0.0; //定义垂直滑动条初始值function OnGUI () { //用户界面的组件//Window 创建一个窗口,用于放置其他控件//参数列表为(窗口编号,位置和大小,窗口执行函数(可放置其他控件),标题)GUI.Window(0, Rect(0.1*Screen.width, 0.2*Screen.height, 0.8*Screen.width,0.6*Screen.height), MyWindow, "自定义窗口");//Label 常用于绘制文本或图形//参数列表为(位置和大小,内容)bel(Rect(10,10,Screen.width,30), "lable文本");bel(Rect(10,50,Screen.width,30), str);//Box 常用于绘制带边框的文本或图形//参数列表为(位置和大小,内容)GUI.Box(Rect(300,10,100,20), "box文本");GUI.Box(Rect(300,40,0.5*pic.width,0.5*pic.height), pic);}//窗口执行函数function MyWindow (windowID: int) {//Button 创建一个普通按钮//参数列表为(位置和大小,内容)if (GUI.Button(Rect (10,20,100,20), "普通按钮")){str="点击了普通按钮";}//也可以以贴图作为按钮内容if (GUI.RepeatButton(Rect (10,80,pic.width,pic.height), pic)){str="点击了贴图按钮";}//RepeatButton 创建一个长按按钮//参数列表为(位置和大小,内容)if (GUI.RepeatButton(Rect (10,50,100,20), "长按按钮")){str="按住时间为:"+fTime;fTime++;}//Toggle 创建一个开关//参数列表为(位置和大小,内容)toggleTxt = GUI.Toggle(Rect(10, 220, 100, 30), toggleTxt, "开关");bel(Rect(70,220,50,30), tstr);if (toggleTxt){tstr="开启";}else{tstr="关闭";}//Toolbar 工具栏//参数列表为(位置和大小,序号,内容)toolbarInt = GUI.Toolbar(Rect (10, 250, 100, 20), toolbarInt, toolbarStrings); bel(Rect(120,250,50,30), toolbarStrings[toolbarInt]);//selGridInt 按钮网格//参数列表为(位置和大小,序号,内容,每行按钮数)selGridInt = GUI.SelectionGrid (Rect (10, 280, 100, 50), selGridInt, selStrings, 2);//TextField 单行文本输入框//参数列表为(位置和大小,内容,最大长度)stringToEdit1 = GUI.TextField(Rect (200, 20, 100, 40), stringToEdit1, 25);//TextArea 多行文本输入框//参数列表为(位置和大小,内容,最大长度)stringToEdit2 = GUI.TextArea(Rect (200, 70, 100, 40), stringToEdit2, 50);//PasswordField 密码输入框//参数列表为(位置和大小,内容,遮罩,最大长度)passwordToEdit = GUI.PasswordField(Rect (200, 120, 100, 20), passwordToEdit, "*"[0], "*"[0], 10);//HorizontalSlider 水平滑动条//参数列表为(位置和大小,当前值,最小值,最大值)hSliderValue = GUI.HorizontalSlider(Rect (200, 150, 100, 30), hSliderValue, 0.0, 10.0);//HorizontalSlider 垂直滑动条//参数列表为(位置和大小,当前值,最小值,最大值)vSliderValue = GUI.VerticalSlider (Rect (245, 170, 30, 100), vSliderValue, 10.0, 0.0);}//发布时间:2016/6/22 百度文库。

Unity3d NGUI控件知识

Unity3d NGUI控件知识

一、Panel更多精彩请关注:【狗刨学习网】1、Alpha属性影响所有在panel下面的widget。

所以可以用它来淡出整个窗口2、如果你的UI需要被灯光影响,需要勾选上Normals。

3、没有panel所有东西都不能够被渲染出来。

如果你对Unity熟悉,你可以把UIPanel当做Renderer4、Panel会根据dimensions自动Clip所有它的子节点。

使用这个功能需要选择Clipping 下拉列表中的任意选项,之后调整Scene View中紫色矩形的尺寸,就像调整widget的尺寸一样。

通过这样做你可以把一个panel放到Scroll View中,让他轻松的拖拽。

5、一个动力学Rigidbody会自动增加到你的panel上,因为对于Unity来说这样会提升性能。

移动静态的collider会有很多消耗性能的操作,但是移动rigidbody就不会。

二、Camera1、UICamera真正做的事情是发送NGUI事件给所有被当前camera渲染的object,camera 是UICamera脚本所在的那个。

其实这个脚本做的事情和UI无关。

事实上如果你想让游戏里面的object接收OnPress、OnClick、OnDrag等这类事件,你需要把UICamera挂在你的主相机上2、UICamera的选项Event Type用来决定脚本如何排序mouse或者touch触发的事件。

如果是UI模式,这些事件顺序基于widget的depth——和渲染顺序一样。

如果UICamera挂到了Main Camera上,那么就需要把这个选项修改成World模式。

这样就会根据与相机的距离来排序点击到的object。

3、Event Mask用来决定哪些层会接收事件。

大多数情况下你需要的就是“Everything”,这个值会与UnityEngine.Camera's Culling Mask进行逻辑与运算,有需要的话你可以微调这个值。

【深圳龙图教育】Unity3D中GUI简单介绍

【深圳龙图教育】Unity3D中GUI简单介绍

【深圳龙图教育】Unity3D中GUI简单介绍GUI在游戏的开发中占有重要的地位,游戏的GUI是否友好,使用是否方便,很大程度上决定了玩家的游戏体验。

Unity内置了一套完整地GUI系统,提供了从布局、控件到皮肤的一整套GUI解决方案,可以做出各种风格和样式的GUI界面。

在Unity中使用GUI来完成GUI的绘制工作,目前Unity没有提供内置的GUI可视化编辑器,因此GUI界面的制作需要全部通过编写脚本代码来实现,如果游戏有比较多的界面制作需求,可以通过编写编辑器脚本来制作适合自身需求的GUI编辑器,或者借助第三方的GUI插件,如NGUI。

Unity的GUI类提供了丰富的界面控件,可以将这些控件配合使用,GUI控件,如下图:标题GUI代码需要在OnGUI函数中调用才能绘制,GUI的控件一般都需要传人Rect参数来指定屏幕绘制区域,例如Rect(0,10,200,300),对应的屏幕矩形区域左上角的坐标为(0,10),宽度为200,高度为300,在Unity GUI中,屏幕坐标系以左上角为原点接下来我们看Label控件,Label控件适合用来显示文本信息或者图片,我们新建一个c#脚本,叫做TestGUI.cs,然后绑定到我们的Main Camera对象上,Label初始化代码如下:1.void OnGUI()2. {3. //GUI.color = Color.red;4.5. bel(new Rect (10, 10, 100, 200), "Hello World!");6.7. bel (new Rect (100, 100, texture.width/4, texture.height/4), texture);8. }我们定于了两个label,一个显示文字,另一个显示了一张图片,如下图:标题Box控件,Box控件用来绘制带有边框背景的文字或图片,代码如下:1.void OnGUI()2. {3. //GUI.color = Color.red;4.5. //bel(new Rect (10, 10, 100, 200), "Hello World!");6.7. //bel (new Rect (100, 100, texture.width/4, texture.height/4), texture);8.9. GUI.Box (new Rect (10, 10, Screen.width * 0.5f, Screen.height * 0.5f), "This is a title");10.11. GUI.Box (new Rect (150, 170, texture.width/4, texture.height/4), texture);12.13.14. }效果如下:标题Button控件,Button控件用来绘制响应单击事件的按钮,代码如下:1.GUI.Button (new Rect (10, 10, 150, 50), "这是一个文字按钮");2.//图片按钮3.GUI.Button (new Rect (150, 100, texture.width/4, texture.height/4), texture);效果如下图:标题绘制一个文字图片的按钮,代码如下:1.//绘制一个带图片和文字按钮2. GUIContent guic = new GUIContent("按钮", texture);3. GUI.Button(new Rect(10, 70, 150, 30), guic);标题我们可以设置按钮的点击事件,代码如下:1.GUI.Button (new Rect (10, 10, 150, 50), "这是一个文字按钮");2.//图片按钮3.if(GUI.Button (new Rect (150, 100, texture.width/4, texture.height/4), texture))4.{5. Debug.Log("--------aaa");6.7.8.}9.10.//绘制一个带图片和文字按钮11. GUIContent guic = new GUIContent("按钮", texture);12. GUI.Button(new Rect(10, 70, 150, 30), guic);当我们点击了按钮,就会在控制台输出打印的内容,TextField控件,在游戏中,经常需要用到信息输入的窗口,比如聊天窗、用户信息的输入等;PasswordField控件用于绘制密码输入框,经常用于用户登录界面中;TextArea控件与TextField的用法类似,区别就是TextField是单行的,TextArea可以编辑多行的文字,创建的代码如下:ing UnityEngine;ing System.Collections;3.4.public class TestGUI : MonoBehaviour {5.6.7.public Texture2D texture;8.9.public string userName;10.public string password;11.12.public bool isSuccess;13. // Use this for initialization14.void Start ()15. {16. userName = "admin";17. password="123";18. }19.20. // Update is called once per frame21.void Update () {22.23. }24.25.26.void OnGUI()27. {28. //GUI.color = Color.red;29.30. //bel(new Rect (10, 10, 100, 200), "Hello World!");31.32. //bel (new Rect (100, 100, texture.width/4, texture.height/4), texture);33.34. //GUI.Box (new Rect (10, 10, Screen.width * 0.5f, Screen.height * 0.5f), "This is a title");35.36. //GUI.Box (new Rect (150, 170, texture.width/4, texture.height/4), texture);37.// GUI.Button (new Rect (10, 10, 150, 50), "这是一个文字按钮");38.// //图片按钮39.// if(GUI.Button (new Rect (150, 100, texture.width/4, texture.height/4), texture))40.// {41.// Debug.Log("--------aaa");42.// }43.//44.// //绘制一个带图片和文字按钮45.// GUIContent guic = new GUIContent("按钮", texture);46.// GUI.Button(new Rect(10, 70, 150, 30), guic);47.48.49. userName=GUI.TextField (new Rect (10, 10, 150, 30), userName);50.51. //'*'密码字符串的掩码字符52. password=GUI.PasswordField (new Rect (10, 50, 150, 30), password, '*', 25);53.54. GUI.TextArea(new Rect(10, 100, 150, 50),"abcderfasdasdasdasfasdaasdfdfsfsd");55.56.57.if (GUI.Button (new Rect (Screen.width / 2 - 50, Screen.height / 2 - 50, 100, 100), "登录"))58. {59.60. //判断登录61.if (userName.Equals("admin") && password.Equals("123"))62. {63. isSuccess=true;64. }65.else66. {67. isSuccess=false;68. }69.70. }71.72.if (isSuccess)73. {74. bel(new Rect(10, 200, 100, 30), "登录成功!");75. } else76. {77. bel(new Rect(10, 200, 100, 30), "登录失败!");78. }79.}80.81.82.83.}效果如下:标题Toggle控件可以用于制作开关按钮,每次单击,它都会在开和关的状态之间切换,创建代码如下:1.//文字2.toggleTxt = GUI.Toggle (new Rect (10, 10, 100, 30), toggleTxt, "A Toggle text");3.//图片4.toggleImg = GUI.Toggle (new Rect (10, 50, 50, 50), toggleImg, texture);效果如下图:标题ToolBar控件适用于绘制一组按钮,在这些按钮中同时只激活一个,可以用来制作工具栏,创建代码如下:1.public int toolbarInt;2.3.toolbarInt=GUI.Toolbar(new Rect(10,10,250,30),toolbarInt,new string[]{"功能一","功能二","功能三"4.});效果如下图:标题Silder滑动条是一种很常用的界面元素,可用在音量调整、进度显示、数值调整的GUI界面中,在Unity中Slider控件分为水平和垂直2种,对应的GUI函数为HorizontalSlider 和VerticalSlider,创建代码如下:1.hSliderValue = GUI.HorizontalSlider (new Rect (50, 25, 100, 30), hSliderValue, 0.0f, 10.0f);2.3.//显示水平滑动条数值bel(new Rect(25,22,100,30),hSliderValue.T oString("0.00"));5.6.vSliderVaule = GUI.VerticalSlider (new Rect (25, 70, 30, 100), vSliderVaule, 0.0f, 10.0f);7.8.//显示垂直滑动条数值bel(new Rect(22,170,100,30),vSliderVaule.T oString("0.00"));效果如下图:标题Scrollbar控件,滚动条Scrollbar常用于页面区域的滚动,例如文档浏览中,在Unity中S crollbar控件分为水平和垂直2种,对应的GUI函数为HorizontalScrollbar和VerticalS crollbar,创建代码如下:1.hSbarValue = GUI.HorizontalScrollbar (new Rect (25, 25, 100, 30), hSbarValue, 1.0f, 0.0f, 10.0f);2.3.vSbarVaule = GUI.VerticalScrollbar (new Rect (25, 50, 30, 100), vSbarVaule, 1.0f, 10.0f, 0.0f);效果如下图:标题Unity默认的控件外观十分简单,在游戏开发过程中,开发者都会根据游戏的类型和内容来设计一套个性化的游戏界面,Unity可以通过配置GUISkin来更改控件的默认样式,制作出符合游戏风格的控件外观。

Unity3D入门之GUI基础以及常用GUI控件使用(2)

Unity3D入门之GUI基础以及常用GUI控件使用(2)

Unity3D入门之GUI基础以及常用GUI控件使用(2)using UnityEngine;using System.Collections;public class Cube1Control : MonoBehaviour {public Texture texture;public Texture2D texture2D;public Texture2D texture2DActive;public string userName;public string password;public string remark;public bool isSuccess;public int select=0;public bool toggle1 = false;public Texture2D bug1;public Texture2D bug2;public float h;public Vector2 vector2;Rect rect1 = new Rect(0, 10, 300, 500);Rect rect2 = new Rect(600, 10, 300, 500);public int selGridId = 0;string[] selString = new string[] { "Grid1", "Grid2", "Grid3", "Grid4", "Grid5" };// Use this for initializationvoid Start () {h = 40;}// Update is called once per framevoid Update () {}void win(int id){GUI.Button(new Rect(10, 120, 150, 50), "点击按钮");//使用DragWindow启用窗口拖动GUI.DragWindow();}void OnGUI(){#region GUILayout布局////GUILayout采用线性布局,类似于StackPanel,默认是纵向布局。

Unity3d内置图形界面系统(EditorGUI)

Unity3d内置图形界面系统(EditorGUI)

Unity3d内置图形界⾯系统(EditorGUI)⼀、说在前⾯的1、unity内置的ui系统,⽆论是在性能的表现上、功能的强⼤性上、制作复杂ui的便捷性上,还是其它的⼀些⽅⾯都不如⼀些第三⽅的插件来的好,如:NGUI和DF-GUI(PS: 后者⽐前者要好很哦,推荐!))。

2、虽然UnityGUI不如某些第三⽅的插件,但是它在做⼀些简单的测试上,做数据⾼度上还是要⽅便⼀些的;⽽且如果你要做Inspector的定制与Unity插件开发的话,UnityGUI你是绕不过去的哦。

所有⼤概熟悉⼀下UnityGUI还是必要的!3、关于UnityGUI的所有知识,在官⽅⽂档中的都有详细的介绍,在圣典上也有⼀⼀翻译。

我这⾥只是做⼀些简单的记录,也许有不对的地⽅,也许以后还会所补充!4、还有就刚接触这块时觉得UnityGUI相关API有点乱,觉得来必要记录⼀下。

⼆、GuiLayer组件是显⽰UnityGUI元素的必要组件,且必须附在⼀个相机对象上!不然你的UI是显⽰不出来的。

三、古⽼的组件1、这部分主要是和组件,是它们的基类,详参相应的链接。

2、GuiText以⽤来打印显⽰⼀些调试信息和简单的数据显⽰。

3、GuiTexture也在⽤来做⼀些简单ui部件或整个游戏画⾯的背景。

四、UnityGUI系统的分类这部分就⽐较复杂⼀些了。

1、⾸先它可以分成两个独⽴的部分:⾮Editor类与Editor类。

其中每部分中可以分成两个独⽴的部分:GUI系和GUILayout系。

其中的GUI系下的组件的名字基本上只⽤“GUI”开头,⽽GUILayout系下的组件的名字基本上是“GUILayout”开头的。

这样就有四个相对独⽴的UI系统了,这四个部分,每个拿出来都能相对完整个完成⼀个UI制做。

2、不同的是Editor类是⽤于编译器的制定与扩展⽅⾯,GUILayout系要⽐GUI系在功能上要强⼀点⽽以。

呵呵,是不是有点绕,有点乱,有点晕。

Unity3D----GUI

Unity3D----GUI

Unity3D----GUI1、标签:Label (position : Rect, text : string) : voidLabel (position : Rect, image : Texture) : voidLabel (position : Rect, content : GUIContent) : voidLabel (position : Rect, text : string, style : GUIStyle) : voidLabel (position : Rect, image : Texture, style : GUIStyle) : void Label (position t, conte: Recnt : GUIContent, style : GUIStyle) : void Rect:有四个参数x、y、wide、heightText:显示在标签上的文本Image:显示标签上的纹理Style:使用样式如:public Texture2D img;void OnGUI() {bel(new Rect(10, 10, 100, 20), "Hello World!");bel(new Rect(10,50,img.width,img.height),img);}2、盒子:Box (position : Rect, text : string) : voidBox (position : Rect, image : Texture) : voidBox (position : Rect, content : GUIContent) : voidBox (position : Rect, text : string, style : GUIStyle) : voidBox (position : Rect, image : Texture, style : GUIStyle) : voidBox (position : Rect, content : GUIContent, style : GUIStyle) : void 如:public Texture2D img;void OnGUI() {GUI.Box(new Rect(10, 10, 100, 20), "Hello World!");GUI.Box(new Rect(10,50,img.width,img.height),img);}3、按钮:Button (position : Rect, text : String) : boolButton (position : Rect, image : Texture) : boolButton (position : Rect, content : GUIContent) : boolButton (position : Rect, text : String, style : GUIStyle) : boolButton (position : Rect, image : Texture, style : GUIStyle) : boolButton (position : Rect, content : GUIContent, style : GUIStyle) : bool如:GUI.Button(new Rect(10, 80, 150, 20), new GUIContent("我有提示", "恭喜你中奖了!"));// 在旁边的位置显示提示信息。

unity3D学习知识点总结

unity3D学习知识点总结

1.unity简介和安装(x)2.unity基础操作unity窗口界面介绍1.Scene场景编辑窗口(Q、W、E、R、T/按住鼠标右键—旋转视角、按住鼠标右键Q、E、W、S、A、D)2.Game游戏运行窗口(运行按钮,暂停按钮,下一帧画面)3.Hierarchy 场景物体列表窗口(三角符号表示物体间的父子关系)4.Project 项目资源列表窗口(与文件夹对应,mete文件,移动尽量在unity中移动而不是在文件夹中移动,可能报错)5.Inspector 属性编辑列表窗口(选中Hierarchy物体,出现物体相关属性)6.Console 控制台输出窗口7.其他常用窗口:Layers(层)2by3(显示模式)unity菜单界面介绍1.file 文件菜单2.edit 编辑菜单3.Assets 资源菜单4.Gameobject 物体资源菜单ponent 组件菜单6.Window 窗口菜单7.Help 帮助菜单Scene与场景漫游1.Scene窗口各项工具Q、W、E、R按住鼠标右键Q、W、E、RPivot 物体自己的中心/center 所有物体加权之后的中心Global 世界坐标/local 自身坐标Textured Wite/render Paths显示2D/3D2.快捷键与视角的移动Hierarchy与场景搭建1.Gameobject: 基本组件gameobject—>create other2.Gameobject: 灯光组件3.Gameobject: 物体组件4.Gameobject:其他组件5.Hierarchy层级关系与应用6.场景搭建案例Project与资源管理Inspector与游戏组件3.C#语言基础C#的值类型C#的引用类型C#的类型转换C#的逻辑语句C#的集合类型C#的面向对象特性封装、继承、多态Unity 协程:和线程的区别:没有异步同步的概念,每一帧都执行(有内容的情况);协程的作用:1)延时(等待)一段时间执行代码;2)等某个操作完成之后再执行后面的代码。

Unity3D游戏开发标准教程第03章 Unity3D图形用户界面基础

Unity3D游戏开发标准教程第03章 Unity3D图形用户界面基础

3.1 GUI图形用户界面系统 3.1.1 Button 控件
20 21
第5页

if (GUI.Button(new Rect(Screen.width / 2, Screen.height / 4, Screen.height / 5, Screen.height / 10), guiContent)){ //通过第三种方法实现Button控件 22 Debug.Log("static function Button (position : Rect, content : GUIContent) : bool"); 23 } 24 if (GUI.Button(new Rect(Screen.width / 1.5f, Screen.height / 4, 25 Screen.height / 5, Screen.height / 5), "按钮4", guiStyle)){ //通过第四种方法实现Button控件 26 Debug.Log("static function Button (position : Rect, text : String, style : GUIStyle) : bool"); 27 }}}
第2页
3.1 GUI图形用户界面系统
第3页
3.1 GUI图形用户界面系统 3.1.1 Button 控件
12 13
第4页

if (GUI.Button(new Rect(Screen.width / 9, Screen.height / 4, Screen.height / 5, Screen.height / 10), "按钮")) { //通过第一种方法实现Button控件 14 Debug.Log("static function Button (position : Rect, text : String) : bool"); 15 } 16 if (GUI.Button(new Rect(Screen.width / 3, Screen.height / 4, 17 Screen.height / 5, Screen.height / 5), test)){ //通过第二种方法实现Button控件 18 Debug.Log("static function Button (position : Rect, image : Texture) : bool"); 19 }

Unity3D NGUI教程

Unity3D NGUI教程

Unity界面插件NGUI基础教程一:创建你的界面1.创建一个新场景.2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a New UI,会打开UI创建向导.4.在创建向导中你能更改UI的基本参数,现在我们选Default layer.点击Create Your UI 按钮.5.就这样,你的UI创建好了.如果在一个已存在NGUI的项目中你要跳过第二步,并且你要选择一个不同的UI层,你还要确保非GUI 相机不渲染UI层.在做具体UI控件之前,我们看看UI向导为我们做了什么.1.在2D的根对象上有个UIRoot脚本.这个脚本会重新调整游戏对象符合你的屏幕高度,有自动和手动选择高度.2.Camera对象包含Camera和UICamera脚本.UICamera脚本包含NGUI的时间系统.3.Anchor包含UIAnchor脚本.虽然这个脚本可以附加给控件,但在这里可以避免Windows机器上半个像素偏移的问题.4.Panel对象有UIPanel脚本呢,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化,以减少DrawCall.同样你可能还注意到目前自动帮你选中了Panel对象,也就是说下面添加的所有部件都将在作为它的子对象.二:精灵Sprite现在让我们添加一些控件,在NGUI菜单中选择Create a Widget.这个向导会指导你建立一些基本的控件.需要选择所实用的Atlas和字体,因为是新建的项目,所有按下Atlas和Font按钮没有效果,相反会自动复制为你最近使用的元素.我们这里先选择Atlas为SciFi Atlas,字体为SciFi Font-Normal.接下来在Template选择创建什么类型的控件.这个的模板只是帮助你开始创建,当你真正使用NGUI的时候.你会经常用这个向导创建控件的基本体.现在,让我们创建第一个控件.1.假设我们Atlas选择的是SciFi Atlas,我们给Sprite选择Dark.2.点击Add To按钮,(如果按钮是灰色的,那是因为你没有选择Atlas).3.你的Sprite现在已经创建并选中了.不过它非常小,让我们用Transform来调整它符合我们的需要.一个值得注意的事是同一个atlas中创建控件不会响应Z轴变换,不过你可以调整Depth参数来调整他们的前后次序.如果后面你用了多个atlase或者多个UI面板,那么你就可以去调整Z轴变换.你可以尝试添加更多的控件,比如加入一个Sliced Sprite(一个含有9个切片的Sprite,创建固定边框的控件最佳选择),一个Tiled Sprite(一个Sprite缩放填充整个区域)和Filled Sprite(每个Sprite都会有一个单独的参数来控制那些是可见的,常被用来做进度条或者滚动条).如果你找不到它们也没关系,后面的教程将讲解它们.三:9-Slicing Sprite1.选择Panel对象,用控件向导添加一个"Drak"的Sliced Sprite.什么叫9-slicing?查看这里:/designcenter/video_workshop/html/vid0204.html2.调整缩放为(500,500,1).3.添加另外一个Sliced Sprite并设置缩放为(500,40,1).4.更改第二个sprite的位置到(0,230,0).5.更改Sprite的Dark为Light.6.向下图一样调整两个sprite的颜色.7.调整Depth,让彩色的sprite在大的sprite前面.现在看起来像个小窗口了.四:拼贴精灵1.选择Panel对象,添加Tiled Sprite,并选择Honeycomb sprite.2.设置它的位置为(0,-19,0)和缩放为(494,457,1).3.同样你要设置深度调整前后次序.可以按照自己的意愿调整它的颜色使他看起来更好.你可以在任何时候通过选择Panel对象中的Debug Info的Geometry项来查看创建的控件的几何网格. 添加了这么多东西,目前依旧仅有一个Draw call.五:标签1.像前面讲的一样方法选择Panel对象并添加一个Label控件.2.并点击Add To 按钮,如果Add To按钮不可用,是因为你没有指定字体,可以给Font栏指定"SciFi Font-Normal".3.在检视面板给刚添加的UILabel的T ext项添加一些文本.比如Hello World!4.移动标签位置到(0,234,0),让它出现在标题栏上.可以添加多个Label并且使用16进制的值描述不同颜色.以[FF0000]开始,[-]结束,在这之间的文本都会变为红色.因为使用了相同的字体相同的材质,所有整个场景依旧是一个DrawCall.六:按钮现在,你应该可以很容易的创建一个按钮了,但还不知道如何让它接受点击时间.不过这很简单,任何碰撞盒都会收到它应有的事件.所以,一个简单的按钮你只需要在NGUI下选择Attach a Collider给控件,另外NGUI的模板已经有按钮末班,让我们看看.我们选择Panel,用向导创建一个Button.你能看到按钮有多个部分,一个是背景,一个是文本标签还有一些脚本,这就是NGUI的特性,多个小组件像乐高积木一样组合成强大的控件.1. UIButtonColor当鼠标悬停在按钮或者按下的颜色.2. UIButtonScale当鼠标悬停在按钮上时按钮放大.3. UIButtonOffset当按下按钮时按钮像右下的位移.4. UIButtonSound当按钮按下时播放声音.当然还有其他组件,比如UIButtonPlayAnimation 和UIButtonMessage,你自己摸索喽.你也可以添加自定义事件让它处理更多的事件.现在,你应该做成这样的一个界面了.七:滑块下面让我们添加一个滑块.1.用Widget Tool,选择Slider模板.2.给Foreground用Button,给Background用Dark.Thumb可以也用Button.3.选择Panel后点击Add To按钮.一个滑块滚动条就做好了.你可以选择滑块的游戏对象进行颜色和尺寸的调整,但是经验建议你不要去调整控件对象下面的子对象.你可以尝试再做一个垂直滑块.八:复选框接下来我们来做复选框:1.点击蒙版用"X",背景用"Dark".2.创建一个复选框后再选择Panel对象创建一个新GameObject.3.添加更多的复选框到这个GameObject.4.在这些复选框上选择Option项.5.运行一下程序,点击复选框.看看效果.有关联的复选框只需要放在同一个父游戏对象中即可.还可以附件一些其他事件处理功能,如UICheckboxControlledComponent 和UICheckboxControlledObject.可以用来由复选框状态来启用禁用指定的组件或者游戏对象.尝试着做3个复选框来控制红,绿,蓝三个控件的显隐.九:输入框现在我们来创建一个输入框.任何文本标签通过添加碰撞盒盒UIInput脚本都可以变成输入框.不过这里我们也可以用Input模板来创建:1.正如你掌握的,用Widget Tool创建输入框.2.可以用"Dark"或"Highlight"作为背景.3.将它调试正确.播放游戏,点击输入框就可以直接输入文字,在iOS和Android设备上则会自动显示屏幕键盘.这个输入框同样也支持Unity3.4.1新增的输入法类,让你能输入中文.目前唯一不支持Flash平台,因为Unity Flash还没增加IME输入支持.十:三维界面上面的我们一直在做2D的界面,但我们也可以很容易的让它变成3D界面.继续跟着我做吧:1.将Panel从Anchor的子物体中解除掉,由UI Root作为它的父对象.2.删除Anchor(本教程我们只做静止的UI).3.将摄影机改成透视投影.4.将相机的Near改为0.1和Far改为4.0.5.将相机往后移动一点,大概在(0,0,-550)的位置.6.给Panel一点角度,我们这里设置旋转为(0,345,0).7.另外一个霸气的东西就是添加PanWithMouse到Camera.点击Play,试着移动鼠标.看发生了什么.如果你做的没错,你将会看到下面这样的窗口.原文:/?page_id=197Unity界面插件NGUI核心组件说明作者:威阿日期:2012-02-10字体大小: 小中大UICamera-可以添加到任何相机,包含事件系统.UICamera是每个UI的重要组成部分.它负责发送Camera中所有NGUI的活动.如果场景中仅有一个Camera,要确保它附有UICamera脚本.如果有多个相机,确保至少用来渲染UI的相机有UICamera脚本.当将这个脚本放在主相机上时,在游戏场景中的所有都将有OnClick, OnHover, OnDrag等事件.参数Tooltip Delay:设定悬停与对象多少秒才执行OnTooltip事件.如果使用Orthographic Projection相机,建议将相机的Size的尺寸设置为当前分辨率高度的一半.比如针对iPad的屏幕1024*768分辨率,就设置Size为384.另外一种方法是保持Size是1,缩放UI的Root 为该值的倒数,比如在iPad上获得完美尺寸你需要设置Root的缩放到1/384或者0.002604167.第二种方法比较容易实行,不过物体在场景视图中照比其他物体会比较小.如果你仍旧不知道怎么设置正交相机的尺寸,那么尝试看看下面这图.UIAtlas-定义精灵的纹理图UIAtlas是一个容器,它包含了一堆sprite的坐标信息.如果你不熟悉这个概念.你可以这样认为:使用一张包含很多小贴图的大贴图比用若干张小贴图更有效率.而大贴图中的小的贴图被称作为精灵(sprite),大纹理成为图集(atlas).你使用NGUI之前都需要创建一个图集(或使用现有的).可以从这里了解图集的做法.当然也可以直接使用UITexture,但它并不能应对所有问题.Material:是描述绘制本图集的材料.通常推荐用unlit着色器,比如用.Unlit – Transparent Colored为NGUI.TP Import:用于导入从TexturePacker导出的精灵.只需要拖拽输出的Txt文件和所有精灵即可. Coordinates:这允许你从基于像素的坐标系切换为基于UV的坐标系.通常都是以像素坐标系制作,但如果你需要重新调整纹理,则要先切换为纹理坐标.New Sprite:允许已当前选择的精灵为范本创建新的精灵.Delete:删除所选精灵.Sprite:可以通过下拉列表选择所有正在使用的精灵.Edit Name:重命名精灵的名称.Outer Rect:设置精灵的外边框.Inner Rect 设置精灵的内边框,如果你不使用UISlicedSprite,可以跳过这个设置.Padding:微调校正精灵的偏移量Correction:基础的校正精灵的坐标使用完美整数像素.Show:检查精灵在图集中的位置.提示可以将精灵组织成组创建多个图集.只要图集共享相同的材质,那么控件仍旧会使用很少的DrawCall. 为达到最佳效果,推荐将纹理的wrap模式设置为"Clamp"和将格式设置为"Truecolor".将类似的纹理做成一个图集是很好的方式,但是要尽量减少同时使用的图集数量.如果你是使用Texture Packer工具来创建图集,要在输出设置中选择Unity3D.如果你是用Photoshop创建图集,你能通过选择工具配合info panel面板来找出精灵的位置和尺寸.UIFont-字体图集UIFont可以设置UI所使用的字体数据和材质.可以使用免费的BMFont,或使用更专业的Glyph Designer.一般只做一次字体,保存为一个预设,作为新标签所用的字体.参数:Import Font:用于导入Glyph Designer.或BMFont输出的FNT(改后缀为TXT)数据. UIAtlas:用来设置字体纹理所在的图集,根据是否已选定UIAtlas,你会看到一下选项如果UIAtlas已指定,你可以选择使用字体的精灵.如果没有指定UIAtlas,你可以选择用来绘制字体的材质.在NGUI中通常用"Unlit"类别下的着色器,如“Unlit – Transparent Colored".你可以调整字体在材质纹理内的像素矩形.快速校正完美像素坐标,四舍五入到最近的像素值.Spacing:可以调整字符之间的间距.Show:检查字体在纹理贴图中的位置.提示为达到最佳效果,推荐将纹理的wrap模式设置为"Clamp"和将格式设置为"Truecolor".可以将多个字体合并为一个图集.这样整个UI使用这些字体,仍旧会保持一个DrawCall.你可以给字体增加斜角,阴影,描边等效果,只要确保BMFont导出之前你设置好足够的边距和间距就可以了.UISprite-从图集中画一个精灵UISprite是第二个不常用的插件(第一个是UITexture),它唯一用途就是绘制地图集的一部分.参数Transform:是很重要的一个组件,每个控件都可以通过Transform来进行位置和大小的调整.它也会影响到"Make Pixel-Perfect".你可以在它和UICamera之间任选一个来进行"完美像素"的调整. UIAtlas:用来指定所使用的图集.拖拽或者按下左侧的按钮选择最近使用的图集.Sprite:选择图集中使用的精灵.选择好精灵后.点击一下"Make Pixel-Perfect"会自动为你调整Transform的尺寸.Depth是避免用Unity的Z排序(效率不好),而且如果你要旋转UI窗口.单纯的通过调整每个控件的Transform的Z轴来排序是不行的.所以要用这个深度来排序.Color Tint:用来调整色调.Make Pixel-Perfect:让你快速调整控件的尺寸到实际像素尺寸.Pivot:选择部件的坐标原点位置.Preview:预览精灵的纹理.提示:如果你看到两个控件有闪烁,意味着你设置了同样的Depth导致了重叠,你要调整不同的深度,让它们不重叠.不要把多个控件混在一起,否则会影响到完美像素这个功能.添加新控件时要注意保持创建新的子对象. 也可以在使用完美像素按钮后再移动组合控件.Label-用指定的字体绘制一个文本标签UILabel被用来显示文字.支持多行,只需要用"\n"换行即可.允许用[RrGgBb]来建立彩色文字.参数:Transform:是很重要的一个组件,每个控件都可以通过Transform来进行位置和大小的调整.它也会影响到"Make Pixel-Perfect".你可以在它和UICamera之间任选一个来进行"完美像素"的调整. UIFont:你可以选择用于这个标签的字体.你可以拖拽预设或者按下按钮选择最近使用的字体.可以通过使用"\n"来决定标签是多行还是单行,同样可以用16进制颜色值来定义彩色文字,以[RrGgBb]开始,以[-]结束.如"Hello [FF0000]World[-]!",最后的结果是World是红色的文字.Line Width:用来指定文字行的最大宽度,如果是单行文本则切掉超出的.如多行文本则会根据宽度自动换行.Multi-line:选择该项后标签达到最大宽度后会自动换行.Password:勾选后字符将自动转为星号.Encoding:勾选后会关闭特殊字符处理,一般用于输入框.Depth:改边标签控件的层级.Color Tint:更改文本的主色调.Make Pixel-Perfect: 让你快速调整控件的尺寸到实际像素尺寸.Pivot:选择部件的坐标原点位置.Preview:预览精灵的纹理.提示:如果你看到文本闪烁或看到被其他控件覆盖了.那么就要调整它的深度.如果遇到复杂字符串(如斜体,标点,括号混合的)需要增加行宽度避免超宽.用"\n"和颜色,仅一个标签就可以做到下面的效果.UIPanel-为控件分组,用于管理和优化DrawCallsUIPanel用来负责创建实际的几何体.不必特别添加UIPanel,只要创建一个控件,它就会自动被添加.你可以创建多个Panel,用于多个菜单.参数:Normals:显示法线,用来检查UI正反是否正确.Gizmos:用来显示几何体,可供选取用.Debug:配合调试检查场景视图的几何体,如果你开启了这个.就应该取消掉上面Gizmos这个选项. Widgets:会显示有多少个控件在这个Panel上.Draw Calls:可以看到用了多少个DrawCall,这个越低越好.Clipping:可以选择你要显示的部分,默认是不进行裁切的.是利用着色器进行裁切的,如果开启这个选项,NGUI将自动切换为有裁切属性的着色器.如果开启裁切.你可以通过Center和Size来设置裁切盒.单位为像素.如果选择柔化边缘裁切,将会有40像素的柔化边缘供处理柔化效果.Material:是只读的,可以看面板用了多少个材质.一个材质将占用一个DrawCall.提示:默认情况下如果没有UIPanel的话,会被最根的控件创建并作为其父对象.而且最好让你多个控件都用一个父对象,便于管理.如果Panels下没有控件.你可以放心的删除这个面板.如果你删除一个存有控件的Panels,它和它下面的控件都会消失,但是当你播放时,所有控件又会重现,因为又自动创建了一个欣的UIPanel.当没有变化时,几何体不会重建,这意味着如果有个完全静止的UI,不会没帧都去更新几何形状,相反它也会被重用,提高性能.UIAnchor-能让控件自动配合屏幕尺寸,填充满屏和保持真实像素尺寸的UI.UIAnchor有多种用途,其中包括在多种分辨率的屏幕的相对定位.如果你将它放在2D UI的root上,它会自动进行完美像素处理.如果将它用于一个对象,它将辅助对象在屏幕上的定位,比如侧边或者角落.比如放在一个精灵上,可以用来将精灵自动填满整个屏幕,比如做个背景.参数:HUD Camera是用来绘制该对象的相机,通常会自动选择的.Side:设置锚点,有4个边,4个角和中心供选择.Half Pixel Offset:让控件有半像素的位移以避免DirectX 9在Windows机器上的一个Bug. Stretch To Fill:缩放填充,一般做背景时候会使用它.Depth Offset:用于基于透视相机时调整计算点的深度.提示:如果对象有UIAnchor这个脚本,它自身的Transform将不接受你的修改,因为它受控于这个脚本.如果你希望添加基于这个锚点的位移,你可以添加一个子对象.比如你希望有个控件始终在屏幕偏移(100,100)这个位置,你应该在层次面板做这样的结构.UI->Anchor->Offset->Widget.UIAnchor同样可用于非正交相机.如果UIOrthoCamera附加到相机,用UIAnchor创建的界面将固定尺寸和位置,无论你将屏幕尺寸改成多大.Events-NGUI强大的事件系统UIEvents-事件系统你可以添加下面的方法脚本到控件或者带有碰撞盒的游戏对象,当然也可以赋予给相机,不过需要相机同时有UICamera脚本:void OnHover (bool isOver):当鼠标移出或者悬停在某个碰撞器上的时候返回布尔值.在触摸设备上不会有作用.void OnPress (bool isDown):当鼠标或者触摸到碰撞器发生布尔值返回.void OnSelect (bool selected):当鼠标或者触摸从OnPress发生后的释放将会返回这个布尔值. void OnClick():和OnSelect的产生条件相同,当点击或触摸碰撞器并且没有发生拖拽时候触发.void OnDrag (Vector2 delta):当移动鼠标或者触摸按下时候位移超过特定阀值时触发.void OnDrop (GameObject drag):当鼠标或触摸释放于从发生OnDrag的不同碰撞器伤触发.传递的参数是产生OnDrag的游戏对象.void OnInput (string text):当一个OnSelect发生后在同一个碰撞器上触发输入.一般只有UIInput 用它.void OnTooltip (bool show):当鼠标悬停超过tooltipDelay时间后触发该命令.触摸设备上不会有作用.可以用stCamera找到谁发出的事件,可用stHit得到谁接受这个事件,以及用stTouchPosition得到触摸或屏幕的位置下面的脚本赋予一个碰撞器时,点击这个碰撞器会输出HelloWorld.。

unity3d基础文档(gui入门,脚本概览,命令手册)

unity3d基础文档(gui入门,脚本概览,命令手册)

Unity3d-GUI入门这一段将解释UnityGUI控制所需的脚本。

UnityGUI控制UnityGUI控制是利用一类被称为OnGUI()的函数,只要在控制脚本激活的状态下,OnGUI()函数可以在每帧调用,就像Update( )函数一样。

GUI控制在结构上相当简单,这种结构在下面这个例子中十分明显:/* Example level loader */function OnGUI (){// Make a background boxGUI.Box (Rect (10,10,100,90), "Loader Menu");// Make the first button. If it is pressed, Application.Loadlevel (1) will be executedif (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控制之间细微的差别。

从零开始学习UNITY3D(GUI篇)

从零开始学习UNITY3D(GUI篇)

从零开始学习UNITY3D(GUI篇)邻近年底,⼼也有些散乱,加上⼯作忙了⼀阵,在达内培训的课程也落下了不少。

对unity3d的热度似乎也有点点下降。

痛定思痛,⼜在淘宝上买了写蛮⽜⽹的视频。

总之不管是⽤任何⼿段都要逼着⾃⼰不要浪费了培训的那些钱。

⾔归正传,现在开启GUI篇章。

GUI这东西在我脑⼦⾥,⾃动归结为.net的⽤户交互控件,实际上应该也就是这个样⼦,类似于button,lable,textbox....的这些东西在GUI⾥⾯都有。

这⼀节讲⼀些简单的GUI。

先来看效果图:1,红框部分,button按钮的text值随着在⽂本框的输⼊⽂本变化⽽变化,始终保持⼀致。

2.Toggle其实是⼀个toggle控件,类似于winfrom的RadioButton,它的未知随着HorizontalScrollbar控件的拖动⽽拖动。

代码其实挺简单的,如下:using UnityEngine;using System.Collections;public class Gui : MonoBehaviour {public GUIStyle buttonstyle;string text="";bool result;float hsliderVale;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}void OnGUI(){hsliderVale = GUI.HorizontalScrollbar (new Rect(80, 100, 100, 30),hsliderVale,2,0,10);result = GUI.Toggle(new Rect(10 * hsliderVale, 170, 100, 30),result,"Toggle");text = GUI.TextField(new Rect (310, 330, 100, 40),text);GUI.Button(new Rect(180,120,100,150),"这是⼀个button按钮","button");GUI.Button(new Rect(110,120,200,210),"这是⼀个button按钮","toggle");bel(new Rect(0,0,200,50),"box类型的lable","box");bel (new Rect (150, 110, 200, 100), "buttonstyle");if (GUI.RepeatButton(new Rect (310, 220, 200, 100),text) ){print("⽤户单击了重复按钮");}}}Rect()这个定位函数被多次⽤到,其具体的定义如下:Rect(x,y,w,h)x表⽰⽔平距离,即以左上⾓为0,0点,距离左边的距离y表⽰垂直距离,距离顶部的距离w表⽰这个矩形的宽度h表⽰这个矩形的⾼度UnityGUI控制是利⽤⼀类被称为OnGUI()的函数,只要在控制脚本激活的状态下,OnGUI()函数可以在每帧调⽤,就像Update( )函数⼀样。

Unity中的GUI编程

Unity中的GUI编程

Unity中的GUI编程在这篇文章中我将给读者介绍Unity中的图形用户界面(GUI)编程.Unity有一个非常强大的GUI脚本API.它允许你使用脚本快速创建简单的菜单和GUI.简介Unity提供了使用脚本创建GUI界面的能力.在写这篇文章的时候,Unity还没有提供一套原生的可视化GUI开发工具,尽管你可能会在Unity Asset商店找到一些使用某种形式的图形化脚本编程编写GUI的工具.Autodesk Scaleform也提供了一个可以单独购买并整合进Unity 的插件但这超出了这篇文章的范围.如果你对Scaleform插件的unity版本感兴趣,我推荐你看看Scaleform Unity Plugin.Unity提供了两个主要的类来创建GUI.GUI类用于创建手动放置的GUI控件.GUILayout类用于创建自动放置的GUI控件.这两个类之间的区别将在文章后面搞清楚.Unity也提供了GUISkin资源(asset翻译成套件?).它可以被应用于给你的GUI控件提供一种通用的的"外观和感觉".一个GUISkin只是GUIStyle对象的集合.每个GUIStyle对象定义了单个GUI控件的样式,比如按钮,标签或者文本域.GUiText组件可被用于渲染单个的文本元素,GUITexture组件可以被用于渲染2D材质到屏幕.GUIText和GUITexture都适用于为你的游戏绘制GUI元素(就像HUD),但这些组件不适用于在游戏中绘制菜单.对于游戏中的菜单(像等级选择和选项设置页面)你应该使用GUI和GUILayout类.这些不同的类,资源(Asset)和组件每一个本文中都会阐述创建菜单首先我讲述一下如何在使用GUI和GUILayout在Unity中创建菜单.我也会向你展示如何使用GUISkin和GUIStyle来自定义GUI控件的外观OnGUI回调函数GUI的渲染是通过创建脚本并定义OnGUI函数来执行的.所有的GUI渲染都应该在该函数中执行或者在一个被OnGUI调用的函数中执行ButtonDemo.js[javascript]view plaincopyprint?1.function OnGUI()2.{3. var buttonWidth = 100;4. var buttonHeight = 50;5.6. var buttonX = (Screen.width - buttonWidth) / 2.0f;7. var buttonY = (Screen.height - buttonHeight) / 2.0f;8.9. //在屏幕中间绘制一个button组件10. if(GUI.Button(Rect(buttonX,buttonY,buttonWidth,buttonHeight),"Press Me!"))11. {12. //在调试控制台打印一些文字13. Debug.Log("Thanks!");14. }15.}脚本ButtonDemo.js将会在屏幕中间绘制一个按钮,松开按钮文字"Thanks!"就会被打印到调试控制台.GUIContent大多数通用控件比如按钮和标签允许你指定控件上该呈现在控件上的的文本或者材质.如果你想在一个控件上指定文本与材质,那必须使用GUIContent结构.CUIContent结构有几个构造函数允许你创建一个带有文本,材质和tooltip的CUIContent对象.下面的例子扩展了之前的例子,但在这个例子中按钮的内容由GUIContent结构指定.ButtonDemo.js[javascript]view plaincopyprint?1.#pragma strict2.var texture:Texture;3.var text:String = "hello text";4.var toolTip:String = "hello toolTip";5.6.function OnGUI()7.{8. var buttonWidth = 100;9. var buttonHeight = 50;10.11. var buttonX = (Screen.width - buttonWidth) / 2.0f;12. var buttonY = (Screen.height - buttonHeight) / 2.0f;13.14. //在屏幕中心绘制一个带有文本和图像的按钮15. if(GUI.Button(Rect(buttonX,buttonY,buttonWidth,buttonHeight),GUIContent(text,texture,toolTip)))16. {17. //在调试控制台打印一些文字18. Debug.Log("Thanks!");19. }20.}改进后的ButtonDemo.js脚本将会在屏幕上显示一个文本与材质.材质,文本和tooltip参数可以在检视器(inspector)中指定.ButtonDemo.js脚本会产生如下结果.放置控件使用GUI类你必须手动的摆放屏幕上的控件.控件使用GUI静态函数的position参数来摆放.为了在屏幕上摆放控件,必须将一个Rect结构作为第一个参数传递给GUI控件函数.Rect结构的为控件定义了X,Y,Width,Height属性.X,Y,Width和Height单位都是像素.Screen.width和Screen.height属性可以被用于检视当前屏幕的范围.脚本ScreenDimension.js可以被用于渲染上面的截图.ScreenDimensions.js[javascript]view plaincopyprint?1.function OnGUI()2.{3. var width = Screen.width;4. var height = Screen.height;5.6. bel(Rect(0,0,100,20),"Top Left");7. bel(Rect(width - 100,0,100,20),"Top Right");8. bel(Rect(0,height - 20,100,20),"Bottom Left");9. bel(Rect(width - 100,height - 20,100,20),"Bottom Right");10.}ScreenDimension.js脚本将绘制4个标签.每个标签都使用Screen.width和Screen.height 属性来决定其屏幕位置并对齐到屏幕角落里(测量单位为像素)GUI类GUI类是Unity用于将控件渲染到屏幕上的主要类.GUI类使用手动摆放来决定屏幕上控件的位置.这意味着在渲染控件时你必须显式的指定控件在屏幕上的位置.使用这种方法手动摆放控件需要多做些工作但他可以让你精确地控制屏幕上的控件位置.如果你不想手动的指定GUI控件的位置,那你应该使用GUILayout类.我们后面再详细阐述GUILayout.GUI控件在下面的章节中,我将介绍在使用GUI和GUILayout时可利用的不同控件这些类提供的默认控件是box,button,label,window,texture,scroll bars,sliders,textfield,textarea,toggle和toolbarGUI.BUTTON可能你最常用的控件之一就是按钮了.你可以使用GUI.Button()静态函数来创建一个按钮.这个函数用于将按钮渲染到屏幕上,当松开按钮时函数返回true.这里值得一说的是GUI.Button函数只会在鼠标在按钮上按下并且在按钮上松开时才返回true,如果用户按下按钮移动鼠标在按钮外面释放鼠标,则函数不会返回TRUE,同样的如果用户按下了鼠标之后将光标移动到按钮上然后释放鼠标该函数也不会返回TRUE.要使该函数返回true,鼠标必须在按钮上按下并释放.以下代码可用于使用按钮创建一个简单的等级选择屏幕(假定你在Build Settings对话框中有多个场景文件要设置)LevelSelect.js[javascript]view plaincopyprint?1.function OnGUI()2.{3. var groundWidth = 120;4. var groundHeight = 150;5.6. var screenWidth = Screen.width;7. var screenHeight = Screen.height;8.9. var groupx = (screenWidth - groundWidth) / 2;10. var groupy = (screenHeight - groundHeight) / 2;11.12. GUI.BeginGroup(Rect(groupx,groupy,groundWidth,groundHeight));13. GUI.Box(Rect(0,0,groundWidth,groundHeight),"Level Select");14.15. if(GUI.Button(Rect(10,30,100,30),"Level 1"))16. {17. Application.LoadLevel(1);18. }19. if(GUI.Button(Rect(10,70,100,30),"Level 2"))20. {21. Application.LoadLevel(2);22. }23. if(GUI.Button(Rect(10,110,100,30),"Level 3"))24. {25. Application.LoadLevel(3);26. }27.28. GUI.EndGroup();29.}将脚本添加到空的场景中会产生如下结果:你也许会想看看Unity脚本参考里的GUI.Toggle和GUI.RepeatButton,这些与GUI.Button 控件类似但略有不同的功能.belbel()静态函数用于绘制一个标签.标签通常实在屏幕上指定位置绘制的文字.标签控件最常用的是在菜单屏幕中指定选项名称(比如文本框和文本域).标签可包含文字,材质或者两者兼有(使用之前讲过的GUIContent结构)下面的例子在屏幕上显示绘制了两个选项.选项名称和滑块的值使用标签呈现OptionsMenu.js[javascript]view plaincopyprint?1.#pragma strict2.3.private var masterVolume:float = 1.0;4.private var sfxVolume:float = 1.0;5.6.function OnGUI()7.{8. var groupWidth = 380;9. var groupHeight = 110;10.11. var screenWidth = Screen.width;12. var screenHeight = Screen.height;13.14. var groupX = (screenWidth - groupWidth) / 2;15. var groupY = (screenHeight - groupHeight) / 2;16.17. GUI.BeginGroup(Rect(groupX,groupY,groupWidth,groupHeight));18. GUI.Box(Rect(0,0,groupWidth,groupHeight),"Audio Settings");19.20. bel(Rect(10,30,100,30),"Master Volume");21. masterVolume = GUI.HorizontalSlider(Rect(120,35,200,30),masterVolume,0.0,1.0);22. bel(Rect(330,30,50,30),"(" + masterVolume.ToString("f2") + ")");23.24. bel(Rect(10,70,100,30),"Effect Volume");25. sfxVolume = GUI.HorizontalSlider(Rect(120,75,200,30),sfxVolume,0.0,1.0);26. bel(Rect(330,70,50,30),"(" + sfxVolume.ToString("f2") + ")");27.28. GUI.EndGroup();29.}OptionsMenu.js脚本运行结果如下:你也应该改看看GUI.TextField和GUI.TextArea这些控件允许你创建可编辑文字输入控件.GUI.HorizontalSlider和GUI.verticalSliderGUI.HorizontalSlider和GUI.verticalslider静态函数可相应的用于绘制水平和竖直滑块.滑块用于指定在一定范围内的一个数值.在上面的例子中,使用了两个水平滑块来指定主音量和音效范围为0到1Slider函数接受当前滑块值和滑块最小值和滑块最大值.上面的例子展示了如何使用水平滑块,竖直滑块使用与水平滑块同样的参数只是滑块是竖直绘制而不是水平绘制.下面的例子展示了使用竖直滑块来创建一个音频均衡器[javascript]view plaincopyprint?1.#pragma strict2.3.private var equalizerValues = new float[10];4.5.function OnGUI()6.{7. var groupWidth = 320;8. var groupHeight = 260;9.10. var screenWidth = Screen.width;11. var screenHeight = Screen.height;12.13. var groupX = (screenWidth - groupWidth) / 2;14. var groupY = (screenHeight - groupHeight) / 2;15.16. GUI.BeginGroup(Rect(groupX,groupY,groupWidth,groupHeight));17. GUI.Box(Rect(0,0,groupWidth,groupHeight),"Equalizer");18.19. for(var i = 0; i < equalizerValues.Length; i++)20. {21. equalizerValues[i] = GUI.VerticalSlider(Rect(i * 30 + 20,30,20,200),equalizerValues[i],0.0,1.0);22. }23. GUI.EndGroup();24.}结果应类似下面的:当使用水平滑块时,最小值在滑块的左边最大值在滑块的右边.当使用竖直滑块时,最小值在顶部,最大值在滑块底部.您可能也想看看GUI.HorizontalScrollbar和GUI.VerticalScrollbar它们类似于滑块,但具有不同的功能。

unity3d 教学大纲

unity3d 教学大纲

unity3d 教学大纲Unity3D教学大纲引言:Unity3D是一款功能强大的跨平台游戏引擎,被广泛应用于游戏开发、虚拟现实、增强现实等领域。

本文将从初学者到进阶者的角度,探讨Unity3D的教学大纲。

一、Unity3D入门1.1 Unity3D概述- 介绍Unity3D的发展历程和应用领域。

- 解释Unity3D的基本概念,如场景、游戏对象、组件等。

1.2 Unity3D安装与界面- 指导学习者下载和安装Unity3D,并介绍Unity3D的界面布局。

- 详细讲解Unity3D的各个面板和工具栏的作用。

1.3 创建第一个游戏场景- 指导学习者创建一个简单的游戏场景,并添加基本的游戏对象和材质。

- 教授如何设置摄像机、灯光和碰撞体等组件。

二、游戏对象与组件2.1 游戏对象的创建与操作- 介绍如何创建不同类型的游戏对象,如立方体、球体等。

- 解释如何在场景中移动、旋转和缩放游戏对象。

2.2 组件的使用与定制- 详细讲解Unity3D内置组件的功能和用法,如刚体、动画、音频等。

- 引导学习者自定义组件,实现特定的游戏逻辑。

三、场景与关卡设计3.1 场景的构建与编辑- 教授如何使用Unity3D的编辑器工具创建复杂的游戏场景。

- 解释如何使用地形编辑器、粒子系统等实现场景的细节设计。

3.2 关卡设计与流程控制- 引导学习者设计游戏关卡,包括关卡目标、难度设置等。

- 教授如何使用脚本编写游戏流程控制,如关卡切换、计分等。

四、游戏物理与碰撞检测4.1 游戏物理引擎的使用- 介绍Unity3D内置的物理引擎,并讲解刚体、碰撞体等物理组件的使用。

- 引导学习者实现基本的物理效果,如重力、碰撞反应等。

4.2 碰撞检测与触发器- 教授如何使用碰撞器和触发器组件实现游戏中的碰撞检测。

- 解释如何编写脚本,实现碰撞事件的处理和触发器的使用。

五、游戏逻辑与脚本编程5.1 C#语言基础- 介绍C#语言的基本语法和面向对象编程的概念。

Unity GUI游戏界面

Unity GUI游戏界面

序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/begi nheightn),"","resume")){//按下按钮你要做的操作}但是这对于大规模的游戏菜单来说绝对是毁灭性的灾难(要不然那么多的Unity游戏也不会总是使用NGUI插件了)。

我尝试使用Unity的旧GUI写过菜单,我们来看看写一个简单的标题画面应该怎么做:首先必须明白的是,标题画面最好实践是一个单独的scene,然后所有的关于菜单的操作都被放在这个空间中,无论你有多少子菜单。

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

于是乎,我准备了如下素材:我的菜单无非就是这些图片的组合。

然后我创建了一个名叫title的场景,他里面只有一个Main Camera我们要做的事情就是在这个相机的GUI层以既定的方式来绘制这些图片。

在老的GUI系统为了更改GUI的风格,有个东西叫做GUISkin,这里面可是设置所有关于GUI的显示风格,包括按钮怎么显示,滚动条怎么显示等等在这里面有一个东西叫做CustomStyle的下拉栏,在这里面可以自定义按钮风格,于是我把自己绘制的图片设置到这里面去:这样一来,所有的东西都已经搞定了,然后我就需要开始写一个脚本来控制所有的GUI行为,JS代码如下:#pragma strictvar titletext : GUISkin;var title : T exture;var about : T exture;var begintextpos_xn = 1f;var begintextpos_yn = 1f;var a = 1f;var b = 1f;var c = 1f;var d = 1f;var e = 1f;var f = 1f;var beginwidthn = 1f;var beginheightn = 1f;var mode = 1;function OnGUI(){GUI.skin = titletext;switch (mode){case 1:GUI.DrawT exture(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/begin heightn),"","Custom0");var botton1 =GUI.Button(Rect(Screen.width/a,Screen.height/b,Screen.width/beginwidthn,Screen.height/beginheightn),"","close");var botton2 =GUI.Button(Rect(Screen.width/e,Screen.height/f,Screen.width/beginwidthn,Screen.height/beginheightn),"","about");if(botton)Application.LoadLevel (1);if(botton1)Application.Q uit();if(botton2)mode = 2;break;case 2:GUI.DrawT exture(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),"","resume");if(bottontomain||Input.GetKeyUp(KeyCode.Escape))mode = 1;break;}}也就是说每帧都要定义button每帧都要绘制,并且按钮和其逻辑是相互分离的,必须要由这段代码来联系起来。

Unity3D游戏开发之NGUI自作登陆界面

Unity3D游戏开发之NGUI自作登陆界面

Unity3D游戏开发之NGUI制作登陆界面我并不想在这里去重复提及其他控件的属性。

因为在我看来,要想对一个控件达到了解,只有自己的亲身体验才是最重要的。

现在网上的文档这么多,学会学习对每个人都至关重要,你完全可以自己查阅到相关文档。

所以就来进行今天的内容吧,不是了解其他控件,而是实现一个登录界面。

先来看看今天的素材吧,很简单,一张背景图片和一个字体而已,导入资源后,记得把背景的纹理类型改为精灵,这样才能在图片控件上进行贴图,如下所示:然后就没什么重要的了,直接在场景中累积控件组合成一个登录界面就好了。

在界面中有一个警示文本,来提示用户重新输入用户名和密码,默认是不可见的。

只有当用户输入了错误信息,才会显示出来。

(文章出处狗刨学习网)用户名和密码输入用到了InputField控件,接受用户输入信息,密码显示是用特殊符号的,这要我们在属性面板中调整,将其文本内容选为密码类型即可。

然后在层次面板中新建一个空的游戏物体,用来做全局的游戏控制。

新建Login脚本,将它挂到空白物体上,用来处理登录逻辑。

脚本如下:using UnityEngine;using System.Collections;//使用UI控件,需要加入如下命名空间using UnityEngine.UI;public class Login : MonoBehaviour {//接收各控件引用public InputField username;public InputField password;public GameObject tip;public void OnLoginButtonClick(){string username = ername.text;string password = this.password.text;if (username == "admin" && password == "admin"){//登录成功之后,跳转到游戏界面Debug.Log("Start!");}else{tip.gameObject.SetActive(true);}}}要想这个点击功能能起到作用,要在登录按钮上注册事件,先选择GameController 这个游戏物体,再选择要注册的方法就可以了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GUILayout游戏界面布局
• 线性布局 • 控件偏移 • 对齐方式
练习-添加与关闭窗口
游戏窗口时可以动态添加与关闭的 本例制作一个可以动态添加与关闭的窗口
本讲小结
1. GUI高级控件 2. GUILayout游戏界面布局
作业D项目开发课程
——游戏GUI界面(一) 讲师:liuchengwu
上节回顾
1. 创建第一个实例工程 2. 使用IDE的窗体环境
本节目标
1. GUI高级控件 2. GUILayout游戏界面布局
概述
• 游戏平台、界面分辨率不一样,制作游戏 界面使用绝对坐标给移植照成非常大麻烦 • GUI提供了布局的概念,布局中所有的坐标 都是相对 • 但是GUI是由Rect固定了显示区域,如果内 容改变,会直接影响展示效果 • 使用GUILayout中系统自动计算控件显示区 域,并且保证他们不会重叠
GUI高级控件
高级控件介绍 Label、Button、TextField、ToolBar、Slider、ScrollView、 GroupView、Window、GUISkin
GUILayout游戏界面布局
• GUILayoutOption设置参数 可以使用GuiLayoutOption,设置控件界面布局 可填充区域的参数: GUILayout.Width() 设置布局宽度 GUILayout.Height() 设置布局高度 GUILayout.MinWidth()设置布局的最小宽度 GUILayout.MinHeight() 设置布局的最小高度 GUILayout.MaxWidth() 设置布局的最大宽度 GUILayout.MaxHeight() 设置布局的最大高度 GUILayout.ExpandWidth() 设置布局整体宽度 GUILayout.ExpandHeight() 设置布局整体高度
相关文档
最新文档