博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NGUI ScrollView动态加入和删除对象。
阅读量:6800 次
发布时间:2019-06-26

本文共 1450 字,大约阅读时间需要 4 分钟。

动态加入,基本思想是:

1、先把要加入的元素在编辑器中编辑好,制作成一个prefab。

2、在代码中,动态的生成一个新的对象增加到Grid对象的子对象中。这里利用到了Resources对象,这个对象的使用方法能够參照官网,就是在Assets文件夹下有一个Resources文件夹,位置随便,仅仅要是在Assets文件夹下即可。

3、加入对象之后,能够从这些对象中获取子对象进行属性的改动,比方加入了十个武器,那么十个武器的Icon,名字和价格都不一样。

以下代码代码中:

代码例如以下:

                           var GameObject  ngui_grid = GameObject.Find ("UIGrid");

            UIGrid ngui_ui_grid = ngui_grid.GetComponent<UIGrid>();

            GameObject _gridItem = NGUITools.AddChild(ngui_grid, (GameObject)(Resources.Load("GridItemPrefab")));

            // 生成的对象又一次命名

            _gridItem.name = "gridItem" + indexSlot;

            var item = itemManage.Items[itemslot.Index];
            

            // 动态改变每个武器对象的显示属性。

            Transform[] allChildren = _gridItem.GetComponentsInChildren<Transform>();
            foreach (Transform child in allChildren)
            {
                if(child.gameObject.tag == "GridItemIcon")
                {
                    UISprite _ItemIcon = child.gameObject.GetComponent<UISprite>();
                    _ItemIcon.spriteName = item.Icon.name;
                }
                else if(child.gameObject.tag == "GridItemName")
                {
                    UILabel _ItemName = child.gameObject.GetComponent<UILabel>();
                    _ItemName.text = item.Name+" "+itemslot.Index;
                }
                else if(child.gameObject.tag == "GridItemPrice")
                {
                    UILabel _ItemPrice = child.gameObject.GetComponent<UILabel>();
                    _ItemPrice.text = item.Price+"$";
                }
                else
                {
                    // do nothing,,,
                }
            }
            // 加入这个标志,能够让元素加入之后,Grid对元素进行又一次排列,
            ngui_ui_grid.repositionNow = true;
            return;

元素删除,代码例如以下:

            for(int k = 0;k<ngui_grid.transform.childCount;k++)

            {
                GameObject go = ngui_grid.transform.GetChild(k).gameObject;
                Destroy(go);
                

                // 这个标记会让元素马上又一次排列。

                ngui_ui_grid.Reposition();
            }

转载地址:http://knuwl.baihongyu.com/

你可能感兴趣的文章
安卓新建项目 - 收藏集 - 掘金
查看>>
js基础 数组与字符串
查看>>
node异常总结
查看>>
Google Maglev 牛逼的网络负载均衡器
查看>>
商品区域goods.vue
查看>>
手把手教你封装网络层
查看>>
软件架构模式
查看>>
20170605-函数的arguments
查看>>
Angular 4.x FAQ
查看>>
Angular2学习笔记二(之创建ionic移动项目)
查看>>
Javascipt中精确小数运算的实现
查看>>
微软云数据库 Azure SQL DB Hyperscale如何实现超大规模存储和高可用?
查看>>
华为的汽车“攻势”
查看>>
超级账本HyperLedger初体验
查看>>
用基于模型和接口的T4来生成RESTful服务
查看>>
苹果裁撤自动驾驶项目员工200余人
查看>>
广深IT之行:传统模式与技术创新的融合
查看>>
「Android」 详细全面的基于vue2.0Weex接入过程(Android视角)
查看>>
关于CarbonData+Spark SQL的一些应用实践和调优经验分享
查看>>
我们究竟应不应该使用框架?
查看>>