我在单独的文件中有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创建新的游戏对象。当复制对象时,检查器设置也被复制,推翻了我在代码中所做的任何事情。