您的位置:首页 > 移动开发 > Unity3D

Unity粒子系统特性

2014-03-28 12:59 651 查看
经代码测试分析,unity粒子系统

Shiruken粒子系统的可编程性比较差。所有的Modules都无法通过代码控制。

可以用ParticleSystem.SetParticles设置粒子,但是设置进去的例子都无法运动,也无法参与碰撞。

Legacy的粒子系统,可以用Emitter.Particles设置粒子,粒子可以运动,但是无法控制单个粒子的运动。只有ParticleAnimator可以操纵粒子的运动。

Particle[] particles=new Particle[]{p,p2,p3};

mEmitter.particles=particles;

mEmitter.particles[2].color=Color.white;//不起作用

p3.color=Color.white;//不起作用

总而言之,unity的可编程性是让人失望的。很多接口都没有暴露,很多东西,因为在c# script和c++之间传递,浪费了效率。比如,设置粒子,就是一次内存copy。

而且,unity的碰撞引擎,按这种思路,恐怕也是没有办法扩展,即使扩展了,也会是个低效的碰撞引擎。

从架构设计来说,它真的很不灵活。

且不说无法扩展component,particleEmitter之类的事情了。

总而言之,它就是个一次浇铸成形的东西,就只能用,没法扩展,没法积累组件。

Legacy的粒子,用SetParticles方法设置进去的可以参与碰撞。

Unity粒子系统的特征:

1.所有的粒子,绘制时候,都面向摄像机

2.粒子的旋转,是平面旋转,而非三维的旋转

3.unity粒子系统,经测试,应该是cpu粒子系统,在高负载时,帧速下降到1fps左右,cpu仍然空闲。cpu则无论粒子数多少,都是50%略多(双核机器)

4.在pc上,unity粒子系统的上限大约是10万左右,此时帧速将下降到1-10帧,再继续增加,将会失去响应。

对于unity的粒子系统,总而言之,是个中差评。因为它并非是gpu粒子系统,而cpu粒子系统应该做得很灵活,但是它不灵活。这种问题产生的原因,是因为unity引擎核心并非是用c#开发,所以造成了一定的交互障碍,妨碍了灵活性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: