经代码测试分析,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. REDIS源码中一些值得学习的技术细节02

    Redis中散列函数的实现: Redis针对整数key和字符串key,采用了不同的散列函数 对于整数key,redis使用了 Thomas Wang的 32 bit Mix Function,实现了d ...

  2. HTML 判断手机的类型(苹果手机安卓手机)

    function isJudege_PlatForm() { var version = navigator.appVersion; var platName = navigator.userAgen ...

  3. IOS 本地推送 IOS10.0以上 static的作用 const的作用

    //需要在AppDelegate里面启动APP的函数 加上 UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNot ...

  4. [03]APUE:文件 I/O

    [a] open #include <fcntl.h> int open(const char *path, int oflag, ... ,mode_t mode) 成功返回文件描术符, ...

  5. 【转载】PHP 开发者该知道的 5 个 Composer 小技巧

    Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...

  6. SQL 订阅发布备注

    单个用户问题 use mastergodeclare @SQL varchar(max)set @SQL=''select @SQL=@SQL+';kill '+RTRIM(spid)from mas ...

  7. Freemarket学习整理。

    导入freemarker.jar包 把word文档另存为xml格式,2007以上版本支持. 编写代码,把路径更改为xml所在路径. 把需要更改的地方写成${}形式. package Document. ...

  8. js获取单选按钮的值

    function a(){ var v=document.getElementsByName("radio"); ;i<v.length;i++){ if(v[i].chec ...

  9. python:threading多线程模块-创建线程

    创建线程的两种方法: 1,直接调用threading.Thread来构造thread对象,Thread的参数如下: class threading.Thread(group=None, target= ...

  10. loop 循环次数

    在汇编中可以使用 loop 段地址:偏移地址 并配合 cx 达到循环执行的目的,但是在一些资料中看到说,cx 是循环的次数,我觉得这是不对的. 比如下面这段代码的作用是使得最终的 ax 中的值为 3 ...