接下来我们讲解下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的文本超过允许的空间之后的处理方法。
文本可以有shadow或者outlineEffect。shadow会使用两倍的geometry,outline会使用五倍——所以要小心这个属性。Distance参数控制shadow或者outline与原文本的距离,以像素为单位。
接下来我们讲解UISprite,UISprite是NGUI里面最实用的。使用atlas纹理的一部份用来绘制sprite,继承UIWidget的所有功能,属性如下图:
接下来我们了解下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 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,如下图: