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

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

下载NGUI包
导入NGUI3.9.1版本package

导入NGUI包
201133009102412.png

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

效果如下
201132374727852.gif

转载于:https://www.cnblogs.com/daxiaxiaohao/p/4744654.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值