做手机游戏开发没有做PC那么能放得开手,虽说强大的智能机时代已近到来,但是小块头毕竟是小块头,很多东西还是抗不住的。
前不久做了一个测试,测试机有:HTC G7、三星I9000、三星I9XXX(不记得了)、HTC G10、里程碑2;
在摄像机照射三角面数这一项的测试上,如果想跑流畅(12帧以上)
HTC G7 只能跑2W面,其他几个勉强能撑到5W。当然,这跟照射器的选择也有很大的关系。
可能当你听到5W这个数字的时候,觉得它已经很大,可是在场景制作美工同学眼里,这真的太难了。
因为说是有5W个面的峰值,但是策划要摆放怪物,N个玩家可能同时出现在一个画面中,玩家还要放技能特效,等等。
把这5W个面分到美工同学手中的时候,只剩下1W-1.5W了。
靠这个数字去做一个很绚丽的3D场景,几乎没有可能,传说中的坑爹。。。
于是乎,暂时剔除物体或取消渲染就开始发挥作用了。
就像GameLoft的《混沌与秩序》一样,它们对场景做的优化处理就很好的利用到了这一点。
比如树木、房屋在50米外是不可见的,
怪物玩家在30米外是不可见的,
火把等粒子效果在20米外是不可见的,
等等。
Unity中也可以简单的实现,那就是active 和 render。
设置剔除一个物体:
gameObject.active = false; // 不可见,可以说是不存在于场景中了
如果想让其子物体都不可见,则要这样:
gameObject.SetActiveResursively(false);
设置不渲染:
gameObject.render.enabled = false; // 不可见,但是还存在于场景中,还可以碰撞
当然,如果直接凭空的让物体消失或出现,感觉非常突兀,这时候就要用到了apha值的变化,实现渐隐的效果。