嗨,在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)
双重否定使事情更难理解发生了什么