unity3D游戏开发十五之NGUI二
接下来我们讲解下UILabel,UILabel是用来显示文本的脚本,继承自UIWidget。我们创建一个label,属性如下图:
所有的label都需要Font才可正常工作。这个字体可以使Dynamic的(引用Unity Font),也可以是Bitmap字体——嵌入到Atlas里面的字体。动态字体更稳固因为它不需要你预先创建符号,但是Bitmap字体可以和你atlas的其他东西渲染在同一个draw call上并且这些字体可以通过photoshop美化。
修改Pivot来改变label的对齐方式。Top-left、Left和Bottom-left是左对齐。Top、Center或者Bottom是中间对齐。Top-right、Right、Bottom-right是右对齐。
使用Dynamic字体的时候,你可以设置label的Font Size和style。你也可以设置一个material用来渲染。
接下来的大框——你可能猜到了——用来输入文本。默认是多行文本输入,除非通过下面的Max Lines属性限制。
Overflow操作让你决定lable的文本超过允许的空间之后的处理方法。
- Shrink Content 内容自动缩放。与Keep Crisp设置一起来控制Dynamic字体,使字体的字号变小而不是简单的缩放。这样不管label是否被缩放都能保持清晰。
- Clamp Content 剔除多余的文本。
- Resize Freely 根据输入的文本内容自动调整dimension。不需要手动调整。
- Resize Height 保持宽度不变,必要时增加高度。
Spacing属性控制字符间距。正负皆可。像素为单位。
前面提到的Max Lines用来控制最多要多少行。用0表示不限制。
关掉Encoding表示不需要颜色和表情标签。默认启用。
可以给label提供渐变通过Gradient的bottom和top颜色。如下图:
文本可以有shadow或者outlineEffect。shadow会使用两倍的geometry,outline会使用五倍——所以要小心这个属性。Distance参数控制shadow或者outline与原文本的距离,以像素为单位。
接下来我们讲解UISprite,UISprite是NGUI里面最实用的。使用atlas纹理的一部份用来绘制sprite,继承UIWidget的所有功能,属性如下图:
- sprite首先需要一个Atlas。点击Atals按钮会列出当前项目中已有的atlas。创建新的atlas要通过Atlas Maker工具(NGUI -> Open -> Atlas Maker)。
- 你可以点击Sprite选择按钮旁边的Edit按钮来编辑选择的sprite。这里允许给sprite增加用来调整9-sliced的边界。
- 默认情况下,新加的sprite会是Simple类型。意味着他们和UITextures的显示效果差不多,除了他们是来自atlas。
- Sprite Type为Filled,这样可以做一个类似冷却的进度条。
- Sprite Type为Tiled,这样你的sprite会重复的填充一块区域。尽量不要用太小的sprite因为这样会创建很多的三角形。给你的sprite一个1像素的border也是个好主意,这一个像素会被排除掉(所有tiled的图的边缘看起来就衔接起来一样)。
- Sprite Type为Sliced就可以创建一个9-slicing的sprite。只有指定了Border后它才会真正起作用。(点击上面提到的Edit按钮)。sliced sprite的一个应用就是做按钮的背景。
使用”Make Pixel-Perfect“选项(新版本是Snap)来让UISprite 使用它的原始尺寸。就是如果你的原始texture是300*200的像素,UISprite的dimensions对应的width和height就会调整到这个数值。 注意这个对Tiled和Sliced sprite没有效果——它们有自己的规则。
接下来我们了解下UIButton,Button是一个非常简单的组件,有以下功能:接收hover、pressed、click事件,修改指定的sprite颜色。Image Button组件可以和Button同时加到一个game object上,Image Button用来切换sprite。 我们新建一个Button,它主要包含一个background的Sprite和一个label,如下图:
属性如下图:
我们在Background这个sprite中指定一个纹理图片,然后修改Widget中Color的颜色,然后修改Label的文字内容,颜色等,如下图:
我们来看看button的监听事件,第一种方法是:我们新建一个脚本,代码如下:
void OnClick(){Debug.Log("------test");}
然后直接绑定到button上,当我们点击的时候,会打印出log的内容
第二种方法是使用SendMessage,选择按钮后,在Unity导航菜单栏中选择Component->Interaction->Button Message 组件
Target:接收按钮消息的游戏对象
Function Name:接收按钮消息的方法,拥有这个方法的脚本必须绑定在上面Target对象身上
Trigger:触发的事件,OnClick显然是一次点击
Include Children :是否让该对象的所有子对象也发送这个点击事件
设置一个空对象,将所有的消息写在一个脚本中,赋值给空对象,给控件添加UIButton Message组件,将空对象拉入组件的Target,选择相应的Function Name(比如OnClick函数)即可。对于多个按钮来说,只需添加UIButton Message组件,选择相应的函数即可实现,如下图:
第三种方法是使用UIListener,这个也是推荐大家使用的一种方法,选择按钮后在Unity导航菜单栏中选择Component->NGUI->Internal ->Event Listener 。 挂在按钮上就可以,它没有任何参数,如下图:
我们修改Test脚本代码,如下:
void Awake (){Debug.Log("----111");//获取需要监听的按钮对象GameObject button=GameObject.Find("UI Root (2D)/Camera/Anchor/Panel/Button");//设置这个按钮的监听,指向本类的ButtonClick方法中UIEventListener.Get(button).onClick=buttonClick;}// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}void buttonClick(GameObject button){Debug.Log("GameObject:"+button.name);}
然后直接绑定到button上,当我们点击的时候,会打印出log的内容
Starting Value:输入框开始显示的字
Saved As:保存输入内容到prefabs中
Active TextColor:激活文本框后显示颜色
Caret Color:插入字符状态颜色
Selection Color:选择状态中字符的颜色
Input Type:输入类型(standard)标准的,(AutoCorrect)自动修正,(Password)密码
Validation:输入类型限制
Character Limit:输入字符数限制
On Submit:输入完后进行事件分发
我们新建一个input,如下图:
unity3D游戏开发十五之NGUI二相关推荐
- unity3D游戏开发十四之NGUI一
在Unity中,可以使用代码控制其自身所携带的GUI来实现图形界面的搭建.但是这些组件的搭建效率很低,而且已经无法满足现在市场对图形用户界面美感的要求,所以,引入了NGUI来增加所要开发的图形用户界面 ...
- 游戏开发(十五) 之 任务系统 成就系统
结合目前的塔防项目,介绍一下游戏开发中的 任务系统 先简单介绍下要讲的任务系统,因为游戏内容不多,所以目前的任务都比较简单,与其说是任务系统,不如叫成就系统.但是就算复杂的MMORPG游戏的任务系统, ...
- unity3D游戏开发十二之疯狂的小球
下面我们通过一个具体的实例来了解如何使用物理引擎,该实例通过第三人称视角控制游戏中的小球对象,游戏通过是否与钻石碰撞来界定是否寻找到钻石并获得积分,获得积分满10分后,赢得游戏,当小球冲出跑道时,游戏 ...
- [Unity3D]Unity3D游戏开发之继续探索NGUI
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.博主最近开始研究NGUI了,可是说实话,博主感觉NGUI的东西似乎有些分散,因为网上大部分的资 ...
- unity3D游戏开发三之unity编辑器二
转:http://blog.csdn.net/kuloveyouwei/article/details/23020995 下面我们介绍下GameObject,游戏对象/物体,通过游戏对象我们可以创建游 ...
- unity3D游戏开发十之粒子系统
Shuriken粒子系统是Unity3.5版本新推出的粒子系统,它采用模块化管理,个性化的粒子模块配合粒子曲线编辑器使用户更容易创作出各种缤纷复杂的粒子效果. 依次打开菜单栏中的GameObject- ...
- 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记! .
http://blog.csdn.net/xiaominghimi/article/details/6127578 http://www.androidegg.com/portal.php?mod=v ...
- 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记! ....
http://blog.csdn.net/xiaominghimi/article/details/6127578 http://www.androidegg.com/portal.php?mod=v ...
- cocos2d-x游戏开发(十五)游戏加载动画loading界面
个人原创,欢迎转载:http://blog.csdn.net/dawn_moon/article/details/11478885 这个资源加载的loading界面demo是在玩客网做逆转三国的时候随 ...
最新文章
- swift 多线程GCD和延时调用
- 人群场景的属性--Deeply Learned Attributes for Crowded Scene Understandin
- 两步设置:visual studio code(vscode)如何设置文本自动换行
- 分布式事务中间件Fescar—全局写排它锁解读
- 2017年第八届蓝桥杯省赛试题(JavaA组)
- intellij idea使用的准备工作
- union和union all有什么区别_Pytorch中Linear与Conv1d(kernel=1)的区别
- php网站xml链接,xml图像超链接的制作代码
- Spring集成Quartz定时任务框架介绍
- linux检查swap配置,Linux环境下swap配置方法
- VS2017 提示警告 IDE0006
- Hadoop学习笔记(一)——编译安装和配置
- 实例验证WEB浏览器智能应对节点失效
- excel计算机二级考试试题,计算机二级考试Excel操作考试题.doc
- JAVA代码走查审查规范
- wireshark分析ICMP数据包
- android局域网设备查看器,局域网查看工具(LanSee)
- Windows 8.1 安装Ruby on Rails手记
- 申宝证券-A股市场的普涨
- 算法竞赛入门经典 例题6-21