在单独的c#文件中,类之间有奇怪的属性遮挡



我在单独的文件中有2个类(它们正在绘制线条)。每个包含单独的(?)公共属性,具有相同的名称但不同的值。

//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不同的东西,则一切都按预期工作。

这是否掩盖了正常行为?或者我一定是犯了什么愚蠢的错误?

找到原因了:This '; shadodowing"来自检查员(感谢@derHugo的提示!)。

当使用ClassB的对象时,我甚至没有触摸检查器。我是用程序改变颜色的,所以没有检查它。

检查器设置一些值的原因是我复制了整个游戏对象(包含类A脚本)来为类b创建新的游戏对象。当复制对象时,检查器设置也被复制,推翻了我在代码中所做的任何事情。

最新更新