Unity学习小结4 - NGUI的几点性能问题

沉默了好长时间,也忙了好长时间,起始也 是一直在为自己没能好好的总结和思考找借口,想总结,时间总还是能抽出来的。最近积攒的坑感觉差不多够多,往出倒上一部分,也相当于为自己今后解决问题多留一些注意点。很多地方写的不准确和错的,还希望大家能够帮我指出。

1. 滚屏组件UIScrollView低性能问题:

如图是我们实现一个带子节点元素的滚动屏幕,括号 中的组件为非必须,像如果想要实现带点击事件的话,UIDragScrollView节点上就得挂上button脚本了。我之所以把结构画出来,是因为在UIScrollView和UIDragScrollView看似职能不一样的脚本中做了很多“重复”的事情。UIScrollView里有OnPress、 OnDrag的事件嵌套调用,这些都不是问题。为了实现拽的效果,UIScrollView的LateUpdate里还添加了一些后续的处理包括重调OnDrag,使得如果我们添加UIScrollView的OnDragFinish事件的话,该事件会被执行两次。而且LateUpdate里的调用会有明显的延迟,两个OnDragFinish事件间隔时间间隔较久。我个人不需要“拖拽”的效果,就将LateUpdate中的OnDrag

去掉。目前暂未发现有影响的BUG。

2. OnDragScrollView的BUG:

同样是上面的设计,我们可以实现一个翻页的滚屏。但是通常的设计是UIDragScrollView的组件是一页。但是如果我每一页中有多个UIDragScrollView呢?每个元素控制的坐标范围就不够一屏。这种情况下是没法直接全屏翻页的。。比如MoveRelative之类的,直接失效,最后只好暴力的指定上下页的元素。所以说NGUI其实还有很多不完美的地方,等着我们用心去发现和逐步的优化。

2014-9-20 22:07:55

时间: 2024-10-12 19:21:58

Unity学习小结4 - NGUI的几点性能问题的相关文章

CSLight学习笔记结合NGUI

 这两天一直在研究CSLight,目前Unity热更新的方式有两种,一种是ulua这个网上的例子已经很多了.还有一种就是CSLight.其实我更希望CSLight可以趋向成熟,因为它的语法就是C#,但是有些C#的标准语法用不了.这两天我学习的做了一个例子,也把我遇到的坑记录一下.结合上章NGUI研究之李剑英的CSLight入门指南结合NGUI热更需要的朋友可以看下. 1.在github上下载CSLight,当我把DLL拖进项目的时候会报错.原因是CSLight的dll和NGUI的冲突了,所以

unity游戏开发之NGUI的UISprite染色

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,我们致力于打造业内unity3d培训.学习第一品牌. 游戏的UI开发中经常会遇到染色问题.例如按钮失效变灰的效果,同一个道具通过策划表配的颜色值染上红绿蓝紫等颜色,效果如下 最笨最挫的方法当然是让美术多出几个资源图,这样的一个缺点是浪费资源,在手游上资源的大小显得尤为重要.而且不好维护和复用,修改一个资源需要同时修改其他颜色的多个同类资源.一种比较

ShaderLab学习小结(六)接收点光源阴影

运行环境:Win10 x64Unity 5.5.4在"ShaderLab学习小结(五)接收平行光阴影"中,通过修改代码,让原来的shader可以接收主平行光的阴影.但是没有点光源的阴影. 在原有的pass通道下面再添加一个pass通道,用于接收点光源阴影.直接将原来的pass复制粘贴成新的pass通道,再进行一些修改即可. pass { tags{ "lightmode" = "forwardadd" } //1. blend one one /

ShaderLab学习小结(五)接收平行光阴影

运行环境:Win10 x64Unity 5.5.4在"ShaderLab学习小结(四)简单产生阴影"基础上,在顶点片断着色器中编写程序使材质能接收阴影将小结(四)中添加的plane的材质换成和球体一样,即用相同的shader,效果如下:阴影消失.球的shader代码没有改动,也就是说球应该是产生阴影了,但是底下的plane也换成球的材质,接收不到阴影.那就要修改shader让它能接收阴影.Shader代码: Shader "Custom/DifSpecPoint"

ShaderLab学习小结(十九)RenderToCubemap创建能反射周围环境的效果

继续用"ShaderLab学习小结(十八)cubemap"中所做的shader想要让它能对周围的环境进行反射思路就是要让它的cubemap里的内容是周围环境的映射shader不变,就要想办法进行映射,这就要用到c#代码了核心的方法是 public bool Camera.RenderToCubemap(RenderTexture cubemap) 顾名思义,这个是Camera的一个方法,渲染至cubemap返回ture则渲染成功看unity document中的说明即从这个camera

git学习小结

背景:最近因为工作原因,需要将以前的代码库由bitbucket重新布置在一台服务器上,所以就学习了下git,特此记录下 在167这台机器上搭建apache,用做git server,由于以前apache都已经搭好了,所以这里只配置git server 就可以了,此处贴出配置: 服务器搭好了,来到配置中的root目录,git clone https://[email protected]/XXXX 此时,库和服务器都搭好了,用于新库测试的机器也可以从git server上克隆库了,来,我们来试试从

网络编程学习小结

几种网络编程方式: ISAPI.CGI.WinInet.Winsock 它们之间的差别: 1)  ISAPI主要是开发基于浏览器client与server端程序.效率比CGI方式高,并且也扩展了CGI没有的一些功能.(基于TCP/IP模型中的应用层) 2)  CGI主要是开发基于浏览器client与server端程序.(基于TCP/IP模型中的应用层) 3)  WinInet主要是开发client程序.(基于TCP/IP模型中的应用层) 4)  Winsock主要是基于socket来开发clie

MogileFS学习小结

大纲: 一.关于MogileFS 二.常见分布式文件系统 三.MogileFS基本原理 四.MogileFS的实现 一.关于MogileFS 当下我们处在一个互联网飞速发展的信息社会,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化.在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集.数据存储.数据搜索.数据共享.数据传输.数据分析.数据可视化等一系列问题. 传统存储在面对海量数据存储表现出的力不从

201671010130 2016-2017-2 《Java程序设计》第四周学习小结

第四周学习小结 本次实验巩固了上次实验分隔数并求和的题,目前这个题有两种做法,一种是不断对数10求余,余数保存在sum中,然后左移一位,直到余数为零.另一种就是将数字强制转换成一个字符串数组String s=String.valueOf(num),根据方法s.toCharArray()将字符分离出来,据"x"-"0"=x,unicode码值相减即可得x的值. 父类和子类能够看两个交集,super关键字是否能够看做一个子类和超类的接口呢? 在子类中可以增加域.增加方法