大家在放不同UI到root里面的时候,可能会发现一个问题,有时候一些UI会莫名其妙的移动位置。导致原本已经排好对齐的UI又乱了。
这时候就要用到NGUI的anchor脚本了,这个脚步用的是非常普遍的。
Anchor简单点来说是实现GUI的对齐功能的。
我已前一章做的登录界面为例
上面可以看到我已经为每个UI都添加了一个UIAnchor脚步。可以在菜单栏添加,也可以在inspector的addcomponent里,如下图
下面我们来看看anchor的脚步参数
其中Container如果你不设置的话,默认是以上面的UICamera为对齐目标。如果设置了container。就如我上面设置了container是sprite。
也就是我登录界面的背景。那他后面的offset设置将会以sprite为目标来移动。
Side的意思就是中心点,分上下左右等8个中心点。大家可以自己调试下。
Relative Offset是相对位移。从最左边移到最右边x的值改变只是从0到1。
而pixel Offset是像素位移。以像素值移动。
说了那么多,实践才是真理啊。
还有一个带有UISprite脚步的都会有这个
也是anchor的一种。后面四个参数的意思是
Target's Left的意思是左边边界以UIRoot的左边为准,加上100个像素。无论你窗口怎么变化,这个sprite的四个边界始终距离Root的四个边界为100,-50,100,-50.。
(不知说得大家明白不,还是自己测试下就知道了。请见谅。。。。。)
大家可以试着加label,button,sprite等UI。
按钮事件脚步
创建一个脚步名为UIDataHandler.cs。脚步代码如下
using UnityEngine;
using System.Collections;
public class UIDataHandler : MonoBehaviour
{
public UIInput nameInput;
public UIInput psInput;
public GameObject loginBtn;
public GameObject registerBtn;
public UILabel tipLabel;
void Start ()
{
//侦听按钮事件
UIEventListener.Get(loginBtn).onClick = clickHandler;
UIEventListener.Get(registerBtn).onClick = clickHandler;
}
void clickHandler(GameObject go)
{
if(go.name=="loginButton")
{
Debug.Log("登录:" + nameInput.label.text + "," + psInput.label.text);
tipLabel.text = "用户名:" + nameInput.label.text + ",密码:" + psInput.label.text;
}
if (go.name == "registerButton")
{
Debug.Log("注册:"+nameInput.label.text + "," + psInput.label.text);
tipLabel.text = "用户名:" + nameInput.label.text + ",密码:" + psInput.label.text;
}
}
void Update ()
{
}
}
把这脚本挂载在UI Root上,然后分别给参数赋值
运行测试,忘input里写东西。点击按钮你就可以看到控制台有东西了。
有些要想要最新版本的NGUI。在这里给大家发个下载链接: