ParticleSystem.emission是个只读的属性,在属性的Get访问器中将一个EmissionModule的变量return了出来, 这个EmissionModule是个struct. 值类型.
按理说, ParticleSystem.emission 这个属性返回出来的值类型的变量应该是一个新的struct(因为值类型在return时会被复制一份), 那么为什么第二句中我修改这个返回结果居然有效? 居然可以通过这样在游戏中变更发射状态.
查阅贴吧给出答案:
【智商捉急】ParticleSystem.emission的相关疑惑【unity3d吧】_百度贴吧
//当你获取时:
public EmissionModule emission
{
get
{
return new EmissionModule(this); //把this保存了
}
}
//部分
public struct EmissionModule
{
private ParticleSystem m_ParticleSystem;
internal EmissionModule(ParticleSystem particleSystem)
{
m_ParticleSystem = particleSystem;
}
public bool enabled
{
get
{
return GetEnabled(this.m_ParticleSystem);
}
set
{
SetEnabled(this.m_ParticleSystem, value);
}
}
}
//当你设定时, 主体的也就是m_ParticleSystem 也就是你或取时传的this 所以能改掉
同样的,起始颜色也可以这样更改。其它属性未测试,应该也可以吧。