Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的粗略占位符文本系统无法正常工作;怎么了?_C#_Unity3d - Fatal编程技术网

C# 我的粗略占位符文本系统无法正常工作;怎么了?

C# 我的粗略占位符文本系统无法正常工作;怎么了?,c#,unity3d,C#,Unity3d,大家好,在unity中,我正在尝试制作这个非常粗糙的文本系统,因为我正在制作一个原型。现在它是说只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句,我不知道我做错了什么。这里是主要代码: public GameObject text; private bool TextVis = false; void Start() { text.SetActive(false); } void OnTriggerEnter2D(Collider2D other) { if(ot

大家好,在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
更改来访问
游戏对象的活动性,而不是使用布尔标志

TextVis == true;
因此,它只使用一个
=
,就像您在顶部所做的那样:

TextVis = true;
  • =
    用于赋值(设置变量值)
  • =
    用于比较(比较变量值)
出现错误的原因是您无法单独在一行上编写比较-如果c#允许,它将进行比较,然后丢弃结果,这意味着这是一个无用的操作,因此一定是一个错误

编译器消息有点神秘,但本质上它意味着“此语句一定是错误的;请仔细检查”

-

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

if(TextVis == true)
同:

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

if(TextVis == false)
但是,如果您将变量命名为明显为正布尔值的变量,这也适用:

if(!TextVisible)
避免以否定的方式命名布尔值。这意味着“如果文本可见”:


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

@doggogotutorials请参见Stackoverflow,我们不会将标题修改为(固定)或任何内容。我们选择有用的,并接受正确(最好)的答案。看见
if(!TextNotVisible)