团结一致,当我尝试执行以下操作时;
gameObject1.GetComponent<ParticleSystem>().main.startSize = transform.localScale.x / 5;
说;
无法更改“ ParticleSyste.main”的返回值,因为它不是变量。
但是,如果我尝试执行以下操作;
var particleSystemMain = gameObject1.GetComponent<ParticleSystem>().main;
particleSystemMain.startSize = transform.localScale.x / 5;
有效。为什么我不能直接修改属性的属性?
此外,Unity文档以第二种方式执行此操作:https://docs.unity3d.com/ScriptReference/ParticleSystem.MainModule-startSize.html
答案 0 :(得分:3)
将main分配给var particleSystemMain时,实际上会得到它的副本。并不是说该操作在技术上是不可能的,但这不会改变您的粒子系统的主体,并且您的修改后的副本不会以任何形式保存,因此c#禁止这样做。