unity3d 不同C#文件中类之间的奇怪属性遮盖

myss37ts  于 2023-01-02  发布在  C#
关注(0)|答案(1)|浏览(144)

我有两个类(画线类)在不同的文件中。每个类都包含名称相同但值不同的公共属性。

//ClassA.cs
public class ClassA: MonoBehaviour
{
   public Color lineColour = new Color(1.0f, 0.0f, 0.0f, 0.0f);  //red
//(...)
}
//ClassB.cs
public class ClassB: MonoBehaviour
{
   public Color lineColour = new Color(0.0f, 0.0f, 1.0f, 0.0f);  //blue
   //(...)
}

由于某种原因,当我访问ClassB中的属性lineColour时,它从ClassA获得值,就好像发生了一些文件间的遮盖:

// in ClassB.cs
  (...)
  lineRenderer.startColor = lineColour;
  lineRenderer.endColor = lineColour;
  (...)
// draws line in red color instead of blue

如果我只将ClassB中的变量名更改为与lineColour不同的名称,则一切都按预期工作。
这是不是掩盖了正常的行为?或者我一定是在犯什么愚蠢的错误?

zd287kbt

zd287kbt1#

找到原因:这个“掩盖”来自督察(感谢@derHugo的提示!)
当使用ClassB对象时,我甚至没有触摸Inspector。我是通过编程来改变颜色的,所以没有检查它。
Inspector设置了一些值的原因是我复制了整个游戏对象(其中包含A类脚本)来为B类创建新的游戏对象。复制对象时,Inspector设置也被复制,推翻了我在代码中所做的任何事情。

相关问题