C# 我的粗略占位符文本系统无法正常工作;怎么了?
大家好,在unity中,我正在尝试制作这个非常粗糙的文本系统,因为我正在制作一个原型。现在它是说只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句,我不知道我做错了什么。这里是主要代码:C# 我的粗略占位符文本系统无法正常工作;怎么了?,c#,unity3d,C#,Unity3d,大家好,在unity中,我正在尝试制作这个非常粗糙的文本系统,因为我正在制作一个原型。现在它是说只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句,我不知道我做错了什么。这里是主要代码: public GameObject text; private bool TextVis = false; void Start() { text.SetActive(false); } void OnTriggerEnter2D(Collider2D other) { if(ot
public GameObject text;
private bool TextVis = false;
void Start()
{
text.SetActive(false);
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player")
{
text.SetActive(true);
TextVis == true;
}
else if(other.tag != "Player" && TextVis == true)
{
text.SetActive(false);
TextVis == false;
}
}
}只是
TextVis
作业中的一些错误。你是说
public GameObject text;
private bool TextVis = false;
void Start()
{
text.SetActive(false);
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player")
{
text.SetActive(true);
TextVis = true;
}
else if(other.tag != "Player" && TextVis == true)
{
text.SetActive(false);
TextVis = false;
}
}
实际上,您可以通过text.activeInHierarchy
更改来访问游戏对象的活动性,而不是使用布尔标志
TextVis == true;
因此,它只使用一个=
,就像您在顶部所做的那样:
TextVis = true;
=
用于赋值(设置变量值)
=
用于比较(比较变量值)
出现错误的原因是您无法单独在一行上编写比较-如果c#允许,它将进行比较,然后丢弃结果,这意味着这是一个无用的操作,因此一定是一个错误
编译器消息有点神秘,但本质上它意味着“此语句一定是错误的;请仔细检查”
-
还想指出,没有任何一点具有可变威胁是布尔值,并将其与布尔值进行比较以得到布尔值结果:
if(TextVis == true)
同:
if(TextVis)
与false进行比较更有意义,因为它可以使代码非常清楚地进行自我记录:
if(TextVis == false)
但是,如果您将变量命名为明显为正布尔值的变量,这也适用:
if(!TextVisible)
避免以否定的方式命名布尔值。这意味着“如果文本可见”:
双重否定使事情更难理解发生了什么@doggogotutorials请参见Stackoverflow,我们不会将标题修改为(固定)或任何内容。我们选择有用的,并接受正确(最好)的答案。看见
if(!TextNotVisible)