您的位置:首页 > 移动开发 > Unity3D

[Unity]Unity开发NGUI代码实现ScrollView(滚动视图)

2015-08-20 11:32 716 查看

Unity开发NGUI代码实现ScrollView(滚动视图)

下载NGUI包

导入NGUI3.9.1版本package

链接: http://pan.baidu.com/s/1mgksPBU 密码: bacy

导入NGUI包



创建MainCameraScript.cs脚本

MainCameraScript.cs


using UnityEngine;
using System.Collections;

public class MainCameraScript : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}
}

创建NGUI根节点的方法

private GameObject Window{ set; get;}

void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject;
}

在Window上添加滚动子视图

void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject;

//在根节点上创建一个UIScrollView子控件
UIScrollView scrollView = NGUITools.AddChild<UIScrollView>(this.Window);

}

在滚动视图上添加Grid表格调整布局

void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject;

//在根节点上创建一个UIScrollView子控件
UIScrollView scrollView = NGUITools.AddChild<UIScrollView>(this.Window);

//在滚动视图上添加UIGrid子控件,来调整布局
UIGrid  grid = NGUITools.AddChild<UIGrid>(scrollView.gameObject);

//设置grid表格的布局方向
grid.arrangement = UIGrid.Arrangement.Horizontal;
grid.cellWidth = 100.0f;
grid.cellHeight = 100.0f;
grid.animateSmoothly = false;
}

添加创建Label的方法

/// <summary>
/// 创建一个小Label控件
/// </summary>
/// <returns>The label item.</returns>
UILabel CreateLabelItem(string name,GameObject parent)
{
//创建一个Lalel控件
UILabel label = NGUITools.AddChild<UILabel> (parent);

//修改Label的字体及颜色
Font f = (Font)Resources.Load ("Arial", typeof(Font));
label.bitmapFont = NGUITools.AddMissingComponent<UIFont>(label.gameObject);
label.bitmapFont.dynamicFont = f;
label.color = Color.red;

//设置Label要显示的文字
label.text = name;

//添加滚动ScrollView时要用到的碰撞器和脚本
label.autoResizeBoxCollider = true;
NGUITools.AddMissingComponent<UIDragScrollView> (label.gameObject);
NGUITools.AddMissingComponent<BoxCollider> (label.gameObject);

//重新调整碰撞器的大小
label.ResizeCollider ();

return label;
}

在Grid上添加10个Label控件

void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject;

//在根节点上创建一个UIScrollView子控件
UIScrollView scrollView = NGUITools.AddChild<UIScrollView>(this.Window);

//在滚动视图上添加UIGrid子控件,来调整布局
UIGrid  grid = NGUITools.AddChild<UIGrid>(scrollView.gameObject);

//设置grid表格的布局方向
grid.arrangement = UIGrid.Arrangement.Horizontal;
grid.cellWidth = 100.0f;
grid.cellHeight = 100.0f;
grid.animateSmoothly = false;

//在Grid表格上添加20个Label对象
for (int i = 0; i < 10; i++)
{
CreateLabelItem (Random.Range (100, 999).ToString(), grid.gameObject);
}

//重新排版
grid.Reposition ();
}

整个MainCameraScript.cs的代码如下

using UnityEngine;
using System.Collections;

public class MainCameraScript : MonoBehaviour {

private GameObject Window{ set; get;}

void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject;

//在根节点上创建一个UIScrollView子控件
UIScrollView scrollView = NGUITools.AddChild<UIScrollView>(this.Window);

//在滚动视图上添加UIGrid子控件,来调整布局
UIGrid  grid = NGUITools.AddChild<UIGrid>(scrollView.gameObject);

//设置grid表格的布局方向
grid.arrangement = UIGrid.Arrangement.Horizontal;
grid.cellWidth = 100.0f;
grid.cellHeight = 100.0f;
grid.animateSmoothly = false;

//在Grid表格上添加20个Label对象
for (int i = 0; i < 10; i++)
{
CreateLabelItem (Random.Range (100, 999).ToString(), grid.gameObject);
}

//重新排版
grid.Reposition ();
}

/// <summary>
/// 创建一个小Label控件
/// </summary>
/// <returns>The label item.</returns>
UILabel CreateLabelItem(string name,GameObject parent)
{
//创建一个Lalel控件
UILabel label = NGUITools.AddChild<UILabel> (parent);

//修改Label的字体及颜色
Font f = (Font)Resources.Load ("Arial", typeof(Font));
label.bitmapFont = NGUITools.AddMissingComponent<UIFont>(label.gameObject);
label.bitmapFont.dynamicFont = f;
label.color = Color.red;

//设置Label要显示的文字
label.text = name;

//添加滚动ScrollView时要用到的碰撞器和脚本
label.autoResizeBoxCollider = true;
NGUITools.AddMissingComponent<UIDragScrollView> (label.gameObject);
NGUITools.AddMissingComponent<BoxCollider> (label.gameObject);

//重新调整碰撞器的大小
label.ResizeCollider ();

return label;
}

// Use this for initialization
void Start () {

CreateUI ();
}

// Update is called once per frame
void Update () {

}
}

效果如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: