或许其中一个经验丰富的Unity开发者能为此提供一些见解:

我有一个UI Canvas按钮,它只会启动一条曲线的搜索。 我想创建一个基本的切换按钮,开启或关闭这个搜索。

现在,这个按钮调用了一个函数:

public void StartSearch()

{

if (!searchActive)

{

searchActive = true;

//并且其他一些代码

}

else

{

searchActive = false;

//其他一些代码

}

}

看起来很简单。 但是问题在于:搜索活跃的状态是这样声明的:public bool searchActive = false;

但是按钮被点击后,什么也没有发生。 甚至需要点击两次这个按钮,才会触发这个过程。

我去看了Gemini,它告诉我我是在建立一个竞争条件,并且需要blah, blah, IENumerator, blah, blah。然后我决定不仅仅是声明它为false,还在Awake()中添加searchActive = false,并且它就工作了。 这个按钮现在表现得就像预期的那样。

所以,我别无选择,只能相信Unity UI按钮不知道这个searchActive bool的初始声明状态(false),所以它就处于一个“超位”状态(既是true又是false)直到它在else { searchActive = false }中被确定为false,然后它才能正常运行!require两次点击。

所以,任何人能为我提供一些见解吗? 这是否是已知的行为? 我在理解变量状态的声明方面哪里出错了?