接下来我们讲解下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 保持宽度不变,必要时增加高度。
前面提到的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的一个应用就是做按钮的背景。
接下来我们了解下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");
- }
第二种方法是使用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 。 挂在按钮上就可以,它没有任何参数,如下图:
- 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 initialization
- void Start ()
- {
- }
- // Update is called once per frame
- void 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,如下图:
转载自 http://blog.csdn.net/kuloveyouwei/article/details/23740893