Unity 优化1

来源:互联网 发布:pk10软件平刷王 编辑:程序博客网 时间:2024/06/05 03:57

我认为unity的优化可以从三方面入手,分别是资源优化、性能优化和内存优化,由于每一方面的优化内容都比较多,我在这里主要分析一下性能优化。系统性能的好与差主要是通过系统的相应时间来衡量的,如果系统的响应时间超过500毫秒,用户就会感觉到明显的卡顿。在unity中,产生卡顿的原因有多种情况,
首先是在打开NGUI界面的时候,容易产生卡顿。因为打开UI时,通过Resources.Load加载资源的操作,是一个”同步”耗时操作,调用Load的时候Unity会自动的把Prefab上所引用的资源在加入内存池,它不会重复加载资源。也就是说当你加载资源的时候,第一次会比较卡。打开UI的时候,进行第一次添加脚本,也比较耗时,脚本中有两个很典型的方法 Awake 和 OnEnable,当预制体实例化的时候,它的脚本必须执行完Awake和OnEnable两个方法以后才算完整载入。代码中用Pubilc 声明的对象,然后是在编辑器拖拽赋值,如果是资源很大的话,unity需要load ,然而load就是一个同步耗时操作,那么它也会影响打开界面的时间。最后我们在说说怎么让NGUI打开界面的速度能快一些,一方面可以修改界面结构,尽可能让界面上绑定UISprite UITexture UILabe这样的游戏对象少一些,另一方面,如果界面没法拆开,那么就把界面的prefab拆成多个,比如底框是一个预制体, 内容是一个预制体 ,列表是一个预制体 ,这样打开界面的时候用协同任务, 一个一个打开,用户就不会感觉到界面卡顿了。
其次是当角色释放技能的时候,容易产生卡顿。技能主要是通过添加粒子特效来实现的,根据粒子特效的原理,粒子特效其实就是个脚本,当播放的时候它会自动创建材质,从而生成它的运动轨迹。所以我们一定要控制同屏幕同时播放的粒子数量。
我们当时要求的是同屏粒子数应小于500,单个离子源发射的粒子数应少于50。尽量减少粒子的面积,面积越大就会越卡。
除此之外,当加载大量角色模型的时候也容易产生卡顿,比如加载一波怪物,因为这些模型上面都有动画控制器,在不停的播放着动画,这些都是比较消耗性能的,适当的减少角色的蒙皮骨骼数量,可以有效解决这类问题,我们当时要求的就是,一个角色模型上面的骨骼数量不可以超过30根。
对于一些创建和销毁比较频繁的对象,比如酷跑游戏里面的障碍物,射击游戏里面的子弹等,我们当是采用的方法是,通过对象池来管理这些资源对象。对象池管理对象的原理不是将不用的时候不要的对象直接Destory掉,而是SetActive(false)。 这样当再次使用的时候只需要SetActivie(true), 这对应这个游戏对象来说 它只会执行OnEnable()这一个方法,所以载入速度是最快的。这样可以避免资源的重复创建和销毁,节省对时间的消耗。但是对象池使用是需要消耗一定内存的,我们需要通过对象池在性能和内存之间做一个权衡,消耗一定的系统内存达到优化性能的目的。以上就是我对unity性能优化的一些看法。

0 0
原创粉丝点击