- 有一些ui上挂了刚体,但其实ui是没必要用刚体的,增加额外的组件会增加额外的开销。
- 移除ui图片的read/write,mipmap
- 移除了一些没用的shader(还有一些没敢移除)
- 分别展示背景,人物和ui。主人物和背景和ui加载好后就可以移除loading了。因为大世界中你不敢保证有多少个角色要加载,当然后期维护要加上遮挡剔除,把屏幕外的东西移除掉
- 一些compoment的update可以等loading结束后才执行,减少加载时每帧的开销
- Transform不能放在for循环,getcompoment也是。
- setactive改造为设置进来时判断是否与之前的值一样。因为本身setactive每次真是调用都回有gc
- string不能直接加
- parent没用setparent替换。
- 如果是交互的音效应该不能压缩,不然因为unity要解压,需要耗时所以点击时不能做到实时。关键再选择PCM
- 协程用得多,这块尽量用update或lateupdate替换,因为协程本身在unity会创建实体来管理,会产生少量得gc
- 摄像机的clipping planes用到足够就好,越小回越少drawcall
- 多余得隔帧处理
- 每帧都再做判断而且判断到false没有及时退出循环
- 多余的gc,主场景进入的过程中有三次gc
- 减少new waitforsecond的使用并且把他存再一个变量
- 特效的order的问题,同一个材质的应该放在同一个order下,不同的材质一定要放在不同的order下。
- 去掉了加载模型后的卸载行为
- 多余的mesh,直接减少五个drawcall
- Aup另一个线程去做gpu数据
- shader预加载放在loading之间的玩家提醒上做
- Globalcameradata的缓存及提前初始化
调整层级,把相同的altas放在一个顺序的层级里,当前战场得ui得dp大概在18个左右
每次都得重新加载资源,其实加载下来保存起来,再初始化就好。
。。
1.ngui会加上rigidbody。这是因为ngui基本都是unity4.x出的版本,所以那时还需要加rigidbody。但到了5.0后就不需要了。所以应该要做工具来识别出属于ui的并且加上了rigidbody的,把他去掉。
2.路线导航箭头的做法,之前每个箭头都是用projector来做,导致会有大概50个dc左右。现在改为用面片(quad)实现。然后用rvocontroller让他再地面来实现
3.字典的key不能用枚举
4.隐藏没用到的widget,现在空widget非常多,会消耗uipanel的update。减少uipanle的消耗5.
5.特效或其他对象分段加载,均衡。并用lru加载
6.动画全都开启optimizeGameObjects选项,减少骨骼运算。
7.用多线程处理(JobHandler,IJobParallelForTransform)。所有update的地方都可以尝试用多线程。比如计算血条层级的地方,对战的地方。String不支持,transform可以从Schedule调用时传递。