NGUI之window窗体

1.Window窗体的设计

效果图:

① 先导入NGUI和所需要的图片

② 将导入的图片做成图集

③创建2DUI,并将2DUILayer修改为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创建2Button,重命名为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 ();

}

}

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页