首页 > 解决方案 > 我可以在一行中修改属性的属性吗?

问题描述

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

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

标签: c#unity3d

解决方案


当您将 main 分配给 varparticleSystemMain 时,您实际上得到了它的副本。并不是说这个动作在技术上是不可能的,但是它不会改变你的partial系统中的main,而且你修改后的副本也不会以任何形式保存,所以c#直接禁止了。

请参阅这个类似的问题以获得更深入的解释


推荐阅读