1.Window窗体的设计
效果图:
① 先导入NGUI和所需要的图片
② 将导入的图片做成图集
③创建2DUI,并将2DUI的Layer修改为UI层
④在UI Root根目录下创建一个Anchor。再在Anchor下创建一个Panel,重命名为WindowPanel,再在WindowPanel下面创建一个空物体,命名为Contents
呈如下格式:
⑤在Contens下创建一个Sprite.重命名为Background,并做如下配置:
⑥在Contents下面创建一个Sprite。重命名为Header,并做如下配置:
然后再Header下面创建一个Label,命名为Title(标题),做如下配置:
然后再Header下面创建一个Sprite,命名为Overlay,添加一些模糊效果,增加朦胧美。
做如下配置:
⑦在Contents下创建一个空的游戏物体,命名为Icicles。
在Icicles的下面创建一个Sprite,命名为Icicle0,做如下配置:
在Icicles的下面创建一个Sprite,命名为Icicle1,做如下配置:
在Icicles的下面创建一个Sprite,命名为Icicle2,做如下配置:
⑧创建一个Sprite,并重命名为Pagination,配置为:
然后再在Pagination创建2个Button,重命名为Left,Right,去掉Button里的Label。在为Button添加一个UISprite的类,为其添加背景。效果如:
Left配置如下:
Icon的配置如下:
同理配置Right的。
⑨在Contents目录下面创建一个空对象,命名为Pages.这个目录下面存放我们所有显示的所有的页面。
这里我们在下面创建了3个空的对象。命名为Page0, Page1, Page2.
在Page0的里面存储Page0里面所有到的所有的东西。同理Page1也一样。
⑩到这里我们的节目设计,基本完成了。但是还没有添加代码。别慌,在这里开始添加代码。
我们将我们的代码挂在Pagination对象上面。注释还算详细,我就不多说了。
代码为:
using UnityEngine;
using System.Collections;
public class UIWindow_Pagination : MonoBehaviour {
/// <summary>
/// 上一步按钮
/// </summary>
public UIButton buttonPrev;
/// <summary>
/// 下一步按钮
/// </summary>
public UIButton buttonNext;
/// <summary>
/// 页码集合的父物体
/// </summary>
public Transform pageContainer;
/// <summary>
/// 当前页面的编号
/// </summary>
private int activePage = 0;
void Start()
{
if (this.buttonPrev != null)
{
this.buttonPrev.onClick.Add(new EventDelegate(OnClick_Prev));
}
if (this.buttonNext != null)
{
this.buttonNext.onClick.Add(new EventDelegate(OnClick_Next));
}
//检测活动页
if (this.pageContainer != null && this.pageContainer.childCount > 0)
{
for(int i=0;i<this.pageContainer.childCount;i--)
{
//gameObject.activeSelf检测对象的活动状态
if(this.pageContainer.GetChild(i).gameObject.activeSelf)
{
this.activePage=i;
break;
}
}
}
//展示可见页面
this.UpdatePageVisibility ();
}
//刷新页面的可见度
private void UpdatePageVisibility()
{
if (this.pageContainer != null && this.pageContainer.childCount > 0)
{
for(int i=0;i<this.pageContainer.childCount;i++)
{
this.pageContainer.GetChild(i).gameObject.SetActive((i==activePage)?true:false);
}
}
}
/// <summary>
/// 上一步按钮的方法
/// </summary>
private void OnClick_Prev()
{
if (!this.enabled || this.pageContainer == null)
return;
//如果我们在第一页,则跳转到最后一页
if (this.activePage == 0)
this.activePage = this.pageContainer.childCount - 1;
else
this.activePage -= 1;
//激活该方法
this.UpdatePageVisibility ();
}
/// <summary>
/// 下一步按钮的方法
/// </summary>
private void OnClick_Next()
{
if (!this.enabled || this.pageContainer == null)
return;
if (this.activePage == (this.pageContainer.childCount - 1))
this.activePage = 0;
else
this.activePage += 1;
//激活该方法
this.UpdatePageVisibility ();
}
}