zoukankan      html  css  js  c++  java
  • NGUI之scroll view制作,以及踩的坑总结

    http://blog.csdn.net/monzart7an/article/details/23878505

    链接:

    http://game.ceeger.com/forum/read.php?tid=5517

    之前也看了不少童鞋谢了关于NGUI的scroll view的制作
    下面我写下自己的制作过程以及心得,希望对童鞋们有所帮助。
    1.首先建立一个960*640的背景参考http://game.ceeger.com/forum/read.php?tid=5314
    效果如图:先借用下三国杀的背景图哈,原图大小是960*640,因为我做的both缩放,很不错的.
    2.随便做一个atlas。资源在网上随便找一个,等下作为滑动对象。
    3.a)在panel下建立两个空的游戏对象,其中pane(view)是等下要展示的view的部分,panel(window)为辅助view展示的,如图
    b)给panel(view)添加uidragable panel(script)并设置参数,如图


    备注:clipping选择soft clip
    size为你需要展示拖动区域的大小,我的展示区域是横向拉动,满屏,图集高度为280.我这里设置稍微大点。就给了300
    最下面是选择scroll bar(稍后会给加上)
    4.
    a)在panel(view)中新建一个空的游戏对象命名为UIGrid
    b)给UIGrid添加uigrid脚本
    c)设置uigrid脚本参数
    备注:uigrid会对其子对象默认排序...
    cell width;cell height指在scroll view中的排列的(或者你认为是uigrid的子对象)元素的高和宽
    5.给UIGrid添加子节点(这里我添加一个sprite,官网demo是item下再添加sprite。道理是一样)
    a)添加sprite并给sprite加上uidragpanelcontents
    并设置如图


    b)复制几个sprite
    6.给panel(window)加一个拉动区域
    如图:
    7.panel(window)下添加scroll bar
    同时要设置,如图
    8.添加两个button,动态添加UIGrid下的节点
    效果展示下:


    9,给button写脚本
    add脚本:


     public UIGrid grid;
        void Start()
        {
            //获得UIgrid节点
            grid = GameObject.Find("UIGrid").GetComponent<UIGrid>();
            //panel = GameObject.Find("Panel-view").GetComponent<UIPanel>();
        }
        void OnClick()
        {
            //载入新的atlas
            UIAtlas atlas = Resources.Load("cardt", typeof(UIAtlas)) as UIAtlas;
            //设置父节点
            GameObject parent = GameObject.Find("UIGrid");
            //添加
            UISprite sprite = NGUITools.AddSprite(parent, atlas, "nvyao");
            sprite.MakePixelPerfect();
            //重设uigrid
            grid.Reposition();
        }

    del脚本


     public UIGrid grid;

        void Start()    {
            //得到grid对象        grid = GameObject.Find("UIGrid").GetComponent<UIGrid>();

        }

        void OnClick()    {
            GameObject sprite = GameObject.Find("Sprite");        if (sprite != null)
            {            Destroy(sprite);
                grid.repositionNow = true;        }
        }




    采坑总结:

                      一、新建一个对象的时候,需要确定这个对象的显示层级(Layer选项)一定要和NGUI摄像机设定的显示层级一样。

                      二、如果添加的Component中有摄像机选项的话,那么一定要检查摄像机一定要设置成NGUI的摄像机,因为一般场景里面除了NGUI的摄像机之外还有渲染场景物体的摄像机。

                      三、两个Panel不要设置为同一depth,不然各种调不对。

                      四、uidragpanelcontents和Colider一定要挂在同一个物体身上,不然不会响应拖拽事件,比如你在Grid对象下挂了一个Item对象,这个Item对象下面有一个Sprite,如果你把uidragpanelcontents放在Sprite上,把Colider放在Item上,那么是不会响应拖拽事件的。

  • 相关阅读:
    线段树时间分治
    CDQ分治
    并查集练习
    hihocoder 1513 小Hi的烦恼 (bitset优化)
    线段树维护哈希
    使用swift语言进行IOS应用开发
    用jquery+Asp.Net实现省市二级联动
    苹果IOS与谷歌 android系统的UI设计原则
    优秀设计师应当知道的20大UI设计原则
    JQuery Easy Ui dataGrid 数据表格
  • 原文地址:https://www.cnblogs.com/123ing/p/4067208.html
Copyright © 2011-2022 走看看