Unity粒子系统特性
经代码测试分析,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粒子系统特性的更多相关文章
- Unity粒子系统
最近比较清闲,就重新看了一遍例子系统,感觉能把效果做的炫酷对于初学者来说并不是一件容易的事,但是回头想想,最重要的原因可能还是没有把Particle Systems组件研究透吧,温故而知新,一起复习一 ...
- Unity Adam特性整理
1.Wind 小工具,一个绘制箭头Gizmos的脚本 2.TubeLight柱形光照 蛮NB的技术,实现动态柱状光照,但相机必须挂上PostProcessing 默认场景拖出来之后是这样的,然后给相机 ...
- Unity 粒子系统 特效 移除屏幕外面后再移回来 不会显示问题
今天遇到的问题 勾选Particle System组件中的Sub Emitters属性 如图
- Unity ContextMenu特性
有时候我们需要在编辑器下,频繁的做一些操作,比如说在不同的位置创建物体,一个个的修改坐标显然有点繁琐 这时候ContextMenu就派上用处了 例:利用 LineRenderer 画圆,我们不可能一个 ...
- 【Unity】第9章 粒子系统
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 粒子是在三维空间中渲染出来的二维图像,主要用于在场景中表现如烟.火.水滴.落叶.--等各种效果. Unity粒子系统 ( ...
- 避开unity的坑(转摘)
避开unity的坑(转摘) 以下总结一部分来自经验之谈,一部分来自其他人的分享.总的来讲,unity开发原型和效果.验证想法,确实是无比便利.可能一个月就把核心玩法做得差不多.强大的编辑器功能让我们也 ...
- 理解依赖注入(IOC)和学习Unity
资料1: IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection). 作用:将各层的对象以松耦合的方式组织在一 ...
- Unity 3D游戏开发引擎:最火的插件推荐
摘要:为了帮助使用Unity引擎的开发人员制作更完美的游戏.我们精心挑选了十款相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJ ...
- C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)
通过 人打电话 来谈谈自己对IOC的理解 版本1.0 public class Person { public AndroidPhone Phone { get; set; } public void ...
随机推荐
- Linux新建用户无法使用tab补全的修改办法
原因: Root用的是/bin/bash 新增用户默认用的是/bin/sh,用ls -l /bin/sh发现 ->dash,修改下连接即可正常使用:
- Matlab(2) -- Find()函数
转自:http://www.matlabsky.com/thread-4228-1-1.html find函数:用于查询非零元素的行和列标志 语法: ind = find(X) ind = find( ...
- C++写一个带参数运行的程序
#include <string.h>#include <iostream>#include <cstdlib>using namespace std; int m ...
- javascript里的封装
用javascript闭包的特性,可以模拟实现私有变量.私有方法. var myObject = =(function(){ var privateValue; function privateMet ...
- 遇到的sql关键字
select count(1) 相当于 select count(*) 网上有比较差别的 菜鸟不用管
- Winform中Grid跨行复制一列
Private Sub DataCopyToGrid() '判断剪切板中是否存在内容 If Clipboard.ContainsText Then Dim str = Clipboard.GetTex ...
- cannot determine the location of the vs common tools folder
问题:打开"VS2010开发人员命令提示后",上面提示"cannot determine the location of the vs common tools fold ...
- 关于UltraEdit的两个小问题
问题一:如何让Java在编写过程中的关键字着色? 首先,需要把编辑的文件名字后缀更改为.java; 然后,找到UltraEdit的安装目录下的wordfile文件夹(以前是一个wordfile.txt ...
- Area区域
1.mvc4.0新增的area区域机制,可以协助你在架构较为大型的项目,让独立性较高的部分功能独立成一个MVC子网站,以降低网站与网站之间的耦合性,也可以通过area的切割,让多人同时开发同一个项目时 ...
- Java反射机制及IoC原理
一. 反射机制概念 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义.在java中,只要给定类的名字, 那么就可以通 ...