文档章节

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

浩浩老师
 浩浩老师
发布于 2015/10/14 13:18
字数 692
阅读 413
收藏 0

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

效果如下 

本文转载自:http://www.cnblogs.com/daxiaxiaohao/p/4744654.html

浩浩老师
粉丝 1
博文 80
码字总数 0
作品 0
海淀
程序员
私信 提问
glegoo/ngui-cocos-creator-convertor

插件说明 需求将Unity项目移植到CocosCreator(H5). 如果UI全部重拼一遍太费时费力. 故抽出时间写了这个扩展. 用于Unity NGUI制作的UI prefab移植到Cocos Creator. NGUI版本: 3.8.2 CocosCrea...

glegoo
2018/12/06
0
0
学习NGUI前的准备NGUI的相关信息

学习NGUI前的准备NGUI的相关信息 第1章 学习NGUI前的准备 NGUI是Unity最重要的插件,在Unity资源商店(Asset Store)的付费排行榜中始终名列前茅,如图1-1所示。本章作为本书的第一讲,内容主...

大学霸
2015/04/02
402
0
unity3D NGUI 基于UIDraggablePanel实现滑动窗体,带位置图标

最近由于工作需要学习UNITY3D,对于做PHP的程序猿挑战性灰常大,unity3D国内相关资料少得可怜唉! 根据需求做个防“天天爱消除”主界面左右滑动窗体的效果,百度搜到雨凇大神的一个帖子 NGUI...

sior
2013/08/18
15.7K
0
NGUI制作ScrollView详解

教程说明 版本:NUGI 3.5.1 1、创建NGUI对象 2、创建ScrollView对象 3、为ScrollView添加UIGrid控件(要点1后面会说明) 4、给ScrollView添加滚动包含的对象,避免太复杂没法把握制作原理,只用...

chenyy1203
2018/06/28
0
0
使用TexturePackerGUI打包unity3d图集的方法

在U3d中,UGUI使用Sprite2D格式,NGUI则需要打包成Atlas图集,使用TexturePackerGUI打包Ngui图集,资源占用较少,性能较高。TexturePacker最终将生成2个文件一个图集文件,一个存放图集中图片...

u014024839
2018/05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
29分钟前
4
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
40分钟前
3
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
40分钟前
3
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
46分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
47分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部