之前5.5粒子系统变量可以通过ParticleSystem访问并且是可读/写的 . 现在它们是通过ParticleSystem.MainModule访问的,因此很多代码已经过时了 . API Updater无法解决大部分问题 . 我想出了如何使用新的变量类型 . 例如,在JetParticleEffect.cs中,此行会引发警告:
// set the original properties from the particle system
m_OriginalLifetime = m_System.startLifetime;
警告声明:'ParticleSystem.startLifetime'已过时:'不推荐使用startLifetime属性 . 请改用main.startLifetime或main.startLifetimeMultiplier .
我尝试过以下方法:
m_OriginalLifetime = m_System.main.startLifetime;
// error: Cannot implicitly convert type 'UnityEngine.ParticleSystem.MinMaxCurve' to 'float'
我相信答案与minMaxCurve constant变量有关,因为这会编译:
m_OriginalLifetime = m_System.main.startLifetime.constant;
但是文档中几乎没有解释 . 任何人都可以对此有所了解吗?
此外,新的乘数适合哪里?我假设你以前可以做到这一点:
particle.startSize *= myMultiplier
......你现在应该这样做吗?
particle.main.startSizeMultiplier = myMultiplier
1 回答
particle.startLifetime:
首先,Unity在Unity 5.5中所做的是为
ParticleSystem
添加新的未来 . 他们还暴露了之前隐藏的一些ParticleSystem
API .ParticleSystem.MainModule.startLifetime现在是一种MinMaxCurve而不是像
ParticleSystem.startLifetime
那样的浮点数 .通过这样做,您现在可以获得更多选项,例如将
startLifetime
修改为曲线 .读取或写入
ParticleSystem.MainModule.startLifetime
取决于通过编辑器或代码设置的ParticleSystem.MainModule.startLifetime.mode
的值 .ParticleSystem.MainModule.startLifetime.mode
的默认值是ParticleSystemCurveMode.Constant所以你的
m_OriginalLifetime = m_System.main.startLifetime.constant;
很好 .如果在运行时动态或随机地将
startLifetime
更改为另一个 mode ,则必须执行以下操作:particle.startSize:
同样适用于
particle.startSize
.particle.startSize
属性现在是m_System.main.startSize;
虽然你 can't 做
m_System.main.startSize.constant *= myMultiplier;
因为你的旧代码是particle.startSize *= myMultiplier
.您需要获取
m_System.main.startSize
,修改它然后将修改后的m_System.main.startSize
分配回m_System.main.startSize
.particle.startSize *= myMultiplier
应该是:Then, what are particle.main.startSizeMultiplier and particle.main.startSize used for?
这两个变量也可用于更改
startLifetime
和startSize
. 它的主要优点是效率很高 . 它并不要求你像我们上面那样复制MinMaxCurve
,以便更改startSize
或startSizeMultiplier
.和
如果
ParticleSystem.MainModule.startLifetime.mode
不变,请使用它们 . 这将有效地改变整体寿命乘数或整体尺寸乘数 .更改颜色和颜色模式
Color :
有一个隐式运算符,允许您使用:
但是
startColor
实际上并不是Color
的类型 .startColor
变量现在是ParticleSystem.MinMaxGradient
的类型 .这是你应该如何改变粒子
startColor
:Gradient :
Random Between Two Colors :
Random Between Two Gradients :
Random Color :