我有以下代码来修改Unity中ParticleSystem
的属性:
waterCone.main.loop = true;
然而,这里出现了以下错误:
“属性'main'访问返回临时值。在访问的结构不被归类为变量时,无法修改结构成员。”
看起来Unity官方文档展示该代码应该如下使用:
var waterConeMain = waterCone.main;
waterConeMain.loop = true;
完全没有错误。
根据我对C#的理解,为什么这样修复问题呢?这应该是完全相同的。
事实上,据我所知,两者都不应该起作用。
我试图在Sharplab中比较这两个,但第一个甚至无法编译。
这里发生了什么?为什么需要这个变量?
(编辑)
从查看源代码来看,似乎ParticleSystem.main
正在执行此操作。
MainModule main => new MainModule(this);
主要是一个结构体,它有一个名为“loop”的属性,例如
get => ParticleSystem.MainModule.get_loop_Injected(ref this);
set => ParticleSystem.MainModule.set_loop_Injected(ref this, value);
但事实上,这似乎给我留下了更多的问题,为什么在没有使用临时变量的情况下,这是一个编译错误?