Unity3D】【Unity粒子】unity粒子特效优化怎么做

2020-12-24 13:58发布

17条回答
希希
2楼 · 2020-12-24 15:39

1.首先,新建一个场景,如果有自己的天空盒资源的话,在Window->Lightin...

2.新建一个空对象命名为Star, 为其添加Particle System组件。 Tips:...

3.勾选Prewarm. 字面意思就是预热。 就是场景一开始,就已经有很多粒子(...

4.设置Start Lifetime(粒子的寿命(开始时)). 由于星星一般移动比较慢,...

5.Emission模块保持勾选,无需改动保持默认即可。如果希望加快星星的产生,可以增大R...


梵梵
3楼 · 2020-12-24 19:47

对于移动平台来讲,一直不建议大量使用粒子特效。因为对CPU和GPU来讲,粒子系统都是一个性能消耗的大户。但是现在粒子特效在游戏中的需求越来越高,因此做了一些Unity粒子优化方面的尝试。由于针对移动平台,因此不考虑Computer Shader这种DirextX11的特性。

水默
4楼 · 2020-12-24 20:10

1、去掉碰撞

2、通过layer分层 合并ui特效层级

3、粒子不超过200 粒子发射器不超过50

4、对于非常小的粒子,可以使用不带apha通道的图片,因为alpha无论是blend alpha test 都是开销


kitidog2016
5楼 · 2020-12-25 09:08

对于移动平台来讲,一直不建议大量使用粒子特效。因为对CPU和GPU来讲,粒子系统都是一个性能消耗的大户。但是现在粒子特效在游戏中的需求越来越高,因此做了一些Unity粒子优化方面的尝试。由于针对移动平台,因此不考虑Computer Shader这种DirextX11的特性。

  拿来做优化实例的粒子特效,包含5个粒子发射器。类型为Billboard的粒子X3,Mesh粒子X2。其中一个Billboard粒子和一个mesh粒子共用了一个材质。对于这个粒子特效来说,5个DrawCall,一个都没有Batching掉。

  然后我们将这个粒子复制10个,发现成功Batching的只有billboard粒子,Mesh粒子没有动态Batching。

  按照其官方文档来讲,Unity动态合批的规则比较苛刻。首先材质必须一致,其次顶点属性个数不超过900个【实际上已经支持远不止900个了】,对于一个Shader,如果包含了顶点位置,UV,顶点颜色三个属性的话,那么这个个数就只有300个。

  对于Billboard粒子来说,它基本上会符合上述的要求,因为Billboard粒子抛弃了这些属性。但是对于Mesh粒子来说,需要共用同样的材质。

  表面上的规则是这样的,但实际应用上有所差别。

  首先是Billboard粒子,即使是使用相同材质的粒子,也要保证这些粒子在渲染队列中是连续的,否则不会完全的Batching。这就需要在粒子的Renderer标签中设置Sorting Fudge/Sorting Order/Order in Layer来保证它们的渲染顺序连续。但是调整Render Queue的弊端也比较明显,特效er在制作特效的时候,并不一定希望相同粒子的渲染队列连续。因为对于半透明物体,渲染顺序会影响他们的显示效果。

  其次是mesh粒子,这个的问题在于多次尝试,依旧没有一次成功Batching掉的经历。即使使用的Mesh是一个Quad,发射器发射的粒子很少,绝对不会超过300个顶点限制的粒子。复制多个出来,依旧不会batching。但是并没有在Unity的官方文档中找到Mesh粒子不会被动态Batching掉的相关说明。所以这块到底真实情况如何我也不能保证,如果有尝试成功的一定要告诉我。


我想吃肉
6楼 · 2020-12-25 09:08

所谓粒子系统,就是由大量且微小的游戏对象所组成的组合体,如日常生活中的火焰、烟尘、雷电、瀑布、喷泉、导弹尾焰、火车烟囱、攻击特效、喷血、掉落的金属火星、喷气等。和着色器(Shader)类似,粒子系统也是为了增加游戏的画面表现力和可玩性而专门开发出的技术

使用粒子系统可以很好地模拟出日常生活中的某些自然现象,以及更好地表现游戏壮观、瑰丽的场景。在游戏中起到一种模拟真实、合理夸张的游戏特效,可以很好地使玩家投入到开发人员所构造出来的魅力无限的虚拟世界中

在做游戏的时候,想要实现各种炫酷的特效,那么就要用到粒子系统!本文就从零开始做一个简单的特效来展示粒子系统的知识和操作细节


Kindery
7楼 · 2020-12-25 09:24

1.首先,新建一个场景,如果有自己的天空盒资源的话,在Window->Lightin...

2.新建一个空对象命名为Star, 为其添加Particle System组件。 Tips:...

3.勾选Prewarm. 字面意思就是预热。 就是场景一开始,就已经有很多粒子(...

4.设置Start Lifetime(粒子的寿命(开始时)). 由于星星一般移动比较慢,...

5.Emission模块保持勾选,无需改动保持默认即可。如果希望加快星星的产生,可以增大R...

查看更多内容


修改一下粒子系统里面的参数就好了,Scaling Mode只要不是shape就行改成hierarchy或者local就可以,asset store里的粒子特效貌似都是默认的shape

flame
9楼 · 2020-12-25 10:38

粒子特效优化:

1、去掉碰撞

2、通过layer分层 合并ui特效层级

3、粒子不超过200 粒子发射器不超过50

4、对于非常小的粒子,可以使用不带apha通道的图片,因为alpha无论是blend alpha test 都是开销


相关问题推荐

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • unity如何自学Unity3D 2022-01-06 15:24
    回答 18

    可以先思考学习的目的,是什么因素在驱动你。是完成一款作品?进入某个行业?还是探究某类问题?否则和技术相关的知识浩如烟海,很容易迷失在细枝末节上。而要找到动力源头。个人的经验,就是关注一些和自己同方向,同类型的创作者。他们输出的作品会激励你,...

  • 回答 23

    可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...

  • 回答 2

    Shader Unlit/Test{Properties{_MainTex(MainTex,2D)=white{}_MainColor(MainColor,COLOR)=(1,1,1,1)_AddTex(AddTex,2D)=white{}_Maxset(Max,Range(0.1,1.0))=0.1}SubShader{Tags{RenderType=Transparent Queue=Tran...

  • 回答 4

    文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细具体代码实现如下:Shader Custom/shuibowen{ Properties{ _MainTex(Base (RGB),2D)=white{} _distanceFactor(Distancefactor,float)=1 _timeFactor(time factor,float)=...

  • 回答 7

    策划的最基本的原则就是:改进缺点,做别人没有做到的。无论游戏策划还是其它策划都是一样!    游戏策划的第二个原则:放飞思想。也许你认为我是说策划们应该充满想象力,能想一些匪夷所思的东西!对不起。不是这意思!一个合格的策划不是为了发泄自己的...

  • 回答 7
    已采纳

    可以多玩一些其它的游戏,看一些科幻电影等,寻找灵感。

  • 回答 3
    已采纳

    游戏架构与设计不纯粹是一门科学,它不需要提出假设或探究真理,也不被逻辑或正规方法的严格标准所束缚。游戏的目的就是通过玩来获得娱乐,因此游戏设计即需要艺术家一样的创造力,也需要工程师一样的精心规划。游戏设计是一门手艺,就像好莱坞的电影摄像或服...

  • 回答 5

    void Update(){          transform.rotation = Quaternion.Euler(Vector3.zero);}可以试一下,保证物体x轴和z轴为0就可以使其一直垂直。

  • 回答 3

    界面左右移动、上下移动。。本质都是:手指滑动。。。可以参考这些:https://www.cnblogs.com/coldcode/p/5362537.htmlhttps://blog.csdn.net/totosj/article/details/80112852https://blog.csdn.net/zcc858079762/article/details/85253120...

  • 回答 6

    首先新建一个C#脚本,命名为MyFollow,然后把以下代码粘贴进去,保存:AخA 1using UnityEngine;2using System.Collections;3public class MyFollow : MonoBehaviour4{5    public float distanceAway = 5;          // distance...

  • 回答 5

    安装高通的Vuforia插件即可。

  • 回答 5

    不可以,只能一个工程打一个包。

  • 回答 2

    Edit->Project Settings->Graphics 找到Shader Stripping 中fog mode设置为custom(原来是Automatic),然后选中你想要的模式,最后重新打包就ok

  • 回答 2

    用到的插件:System.Drawing.dllSystem.Windows.Forms.dllSystem.Deployment.dll(运用基于.Net4.x的dll打包时,需要用到该dll,否则会报错)代码如下:using System;using System.Runtime.InteropServices;using UnityEngine;using UnityEngine.UI; p......

  • 回答 6

    如下图,设置为none,然后删掉滑动条就可以了。

没有解决我的问题,去提问