转载

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

下载NGUI包

导入NGUI3.9.1版本package

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

导入NGUI包

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

创建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 () {  } } 

效果如下

[Unity]Unity开发NGUI代码实现ScrollView(滚动视图)
正文到此结束
Loading...