我有两个类(画线类)在不同的文件中。每个类都包含名称相同但值不同的公共属性。
//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
不同的名称,则一切都按预期工作。
这是不是掩盖了正常的行为?或者我一定是在犯什么愚蠢的错误?
1条答案
按热度按时间zd287kbt1#
找到原因:这个“掩盖”来自督察(感谢@derHugo的提示!)
当使用ClassB对象时,我甚至没有触摸Inspector。我是通过编程来改变颜色的,所以没有检查它。
Inspector设置了一些值的原因是我复制了整个游戏对象(其中包含A类脚本)来为B类创建新的游戏对象。复制对象时,Inspector设置也被复制,推翻了我在代码中所做的任何事情。