我的粗略占位符文本系统不起作用有什么问题?



嗨,在unity中,我现在正试图让这个非常粗糙的文本系统只是占位符,因为我正在制作一个原型。现在它说只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句,我不知道我做错了什么,主要代码是:

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访问GameObject的活动性,而不是使用布尔标志。

更改

TextVis == true;

所以它只使用一个=,就像你在顶部所做的那样:

TextVis = true;
  • CCD_ 5用于赋值(设置变量值(
  • ==用于比较(比较变量值(

这个错误是因为你不能单独在一行上写比较-如果c#允许,它会进行比较,然后丢弃结果,这意味着这是一个无用的操作,因此一定是一个错误

编译器消息有点神秘,但本质上它的意思是";这种说法一定是错误的;再次检查它";

-

还想指出的是,没有任何一点具有可变威胁是布尔值,并将其与布尔值进行比较以获得布尔值结果:

if(TextVis == true)

与相同

if(TextVis)

与false进行比较更有意义,因为它使代码非常清楚地自我记录:

if(TextVis == false)

但是,如果你把变量命名为明显的正布尔值,这也适用:

if(!TextVisible)

避免使用负数命名布尔值。这意味着";如果文本是可见的":

if(!TextNotVisible)

双重否定使事情更难理解发生了什么

最新更新