我可以单行修改属性的属性吗?

时间:2019-03-17 08:00:23

标签: c# unity3d

团结一致,当我尝试执行以下操作时;

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

1 个答案:

答案 0 :(得分:3)

将main分配给var particleSystemMain时,实际上会得到它的副本。并不是说该操作在技术上是不可能的,但这不会改变您的粒子系统的主体,并且您的修改后的副本不会以任何形式保存,因此c#禁止这样做。

See this similar question for a slightly deeper explanation