经代码测试分析,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#开发,所以造成了一定的交互障碍,妨碍了灵活性。

Unity粒子系统特性的更多相关文章

  1. Unity粒子系统

    最近比较清闲,就重新看了一遍例子系统,感觉能把效果做的炫酷对于初学者来说并不是一件容易的事,但是回头想想,最重要的原因可能还是没有把Particle Systems组件研究透吧,温故而知新,一起复习一 ...

  2. Unity Adam特性整理

    1.Wind 小工具,一个绘制箭头Gizmos的脚本 2.TubeLight柱形光照 蛮NB的技术,实现动态柱状光照,但相机必须挂上PostProcessing 默认场景拖出来之后是这样的,然后给相机 ...

  3. Unity 粒子系统 特效 移除屏幕外面后再移回来 不会显示问题

    今天遇到的问题 勾选Particle System组件中的Sub Emitters属性 如图

  4. Unity ContextMenu特性

    有时候我们需要在编辑器下,频繁的做一些操作,比如说在不同的位置创建物体,一个个的修改坐标显然有点繁琐 这时候ContextMenu就派上用处了 例:利用 LineRenderer 画圆,我们不可能一个 ...

  5. 【Unity】第9章 粒子系统

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 粒子是在三维空间中渲染出来的二维图像,主要用于在场景中表现如烟.火.水滴.落叶.--等各种效果. Unity粒子系统 ( ...

  6. 避开unity的坑(转摘)

    避开unity的坑(转摘) 以下总结一部分来自经验之谈,一部分来自其他人的分享.总的来讲,unity开发原型和效果.验证想法,确实是无比便利.可能一个月就把核心玩法做得差不多.强大的编辑器功能让我们也 ...

  7. 理解依赖注入(IOC)和学习Unity

    资料1: IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection). 作用:将各层的对象以松耦合的方式组织在一 ...

  8. Unity 3D游戏开发引擎:最火的插件推荐

    摘要:为了帮助使用Unity引擎的开发人员制作更完美的游戏.我们精心挑选了十款相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJ ...

  9. C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)

    通过 人打电话 来谈谈自己对IOC的理解 版本1.0 public class Person { public AndroidPhone Phone { get; set; } public void ...

随机推荐

  1. draw: Could not use program error=0x505

    原因:Android的模拟器在ADT中调试运行AVD时速度太慢.也就是说创建的虚拟手机配置太好,电脑带不动. 解决办法:从新创建虚拟手机,是手机配置低一点,具体创建方法如下: 开始先点运行,也就是下图 ...

  2. C#中 字符串转换为计算公式

    //方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6 string formulate = string.Format("{0}*{1} - {2} ...

  3. python 正则re模块

    re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import re text = "JGood is a handsome boy, he ...

  4. 【摘】BPMN2.0-概要

    BPMN2.0-概要   原文地址:http://www.uml.org.cn/workclass/201206272.asp 作者:AliKevin2011,发布于2012-6-27   一.BPM ...

  5. 随机生成数字(ashx文件,调用上篇所写发送邮件代码)

    public void ProcessRequest(HttpContext context) { //邮件标题 string Email_Title = Dsis.Core.SysCore.PubF ...

  6. android app上线后bug的处理

    app上线后,后期维护显得尤为重要,今天给大家分享一下app上线后出现bug后的解决方法 1.继承Application类,重写onCreate方法 import java.io.File; impo ...

  7. Ceph剖析:故障检测

    作者:吴香伟 发表于 2014/10/10 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 心跳是用于OSD节点间检测对方是否故障的,以便及时发现故障节点进入相应 ...

  8. Caffe入门与应用 by GX

    深度学习几大工具:Theano(基于python),Torch,Caffe(用c++写的),Tensor flow,CNTK:caffe是比较流行的深度学习的框架 caffe特点:特别适合于新手,由于 ...

  9. 拼sql条件时判断 是不是当前时间是不是周五,如果今天不是周五,就选上周五

    if (Request.QueryString["start"] == null) { for (int i = 0; i < 6; i++) { if (DateTime. ...

  10. 【转】当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

    http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ http://www.cnblogs.com/panx ...