这几天接手了项目逻辑部分,发现ui这部分有些问题,也花了点时间处理。
项目中ui主要是通过两种方式处理的,一、 通过AE插件导出数据直接使用; 二、通过NGUI。
AE插件的好处是减轻了程序的负担,美术也方便,直接在AE上做好动画就可以了。但是有个问题就是AE的动画都是缺少交互,在上面不能写脚本代码,比如有些动画可以划分背景是一个Ae做的动画,在前面是得分显示,这样的话就不能全部用AE 只能把前面的数字用NGUI来做。这样一来问题就出现了,排序问题!!!!
看其代码发现AE插件的渲染部分通过z位置来排序,并且为每一个原始图片一个新的材质,并且还要为其开个灯光,并无优化处理。 而ngui 可以通过控制渲染顺序和拼图达到一点的优化,减少批次,其排序并不与位置z有关系。所以他们的前后关系不是随随便便设置个z来决定的。
解决方法:
一、通过多摄像机,分为AE层,和NGUI层用不同的摄像机。这样是可以控制前后关系。但是这样有时往往两个ui的摄像机都不够使用,并且添加太多摄像机也添加了管理的麻烦,比如做镜头的淡入淡出等等。
二、修改AE插件中的渲染部分,让其使用NGUI的组件来做渲染。这样就好比把在不同坐标系的两者搬到同一坐标了,这样就好处理排序问题了。
最终,为了优化和以后的方便,加上Ae插件本身也bug,所以决定使用第二中方法解决。其修改也还比较容易,不拼图的用UITexture(开发过程中不拼图, 大图如背景图也不拼),拼图了的用UISprite作为渲染载体。主要注意2D的锚点位置,特别是裁了空白边拼图后描点的位置的变化,ae层次结构关系,ae合成内部的depth的设置等等。
posted on 2015-04-27 21:28
木华 阅读(1509)
评论(0) 编辑 收藏 引用