c# - 我可以在一行中修改属性的属性吗?
问题描述
团结一致,当我尝试执行以下操作时;
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
解决方案
当您将 main 分配给 varparticleSystemMain 时,您实际上得到了它的副本。并不是说这个动作在技术上是不可能的,但是它不会改变你的partial系统中的main,而且你修改后的副本也不会以任何形式保存,所以c#直接禁止了。
推荐阅读
- laravel - Laravel - 模型类型的多态关系
- c# - 如何在c#winforms中取消停靠和分离停靠在另一个窗体中的窗体
- haskell - GHC.PackageDb.readPackageDb:不合适的类型(没有足够的字节)
- java - 我想做一个物理计算器(运动学和弹丸),但我不知道如何构造它。我应该怎么办?
- android - 向量中的android本机可执行错误
- ms-access-2016 - 使用带有 Null 值的嵌套 DLookUP 不返回结果#Error
- bash - 如何在 Bash 中使用 NOT 检查退出代码?(如果!... $?)
- php - 仅从数组中动态提取某些键
- raku - 代理的多方法
- python - 有没有办法为 for 循环的每次迭代自动生成一个空数组?