或许其中一个经验丰富的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两次点击。
所以,任何人能为我提供一些见解吗? 这是否是已知的行为? 我在理解变量状态的声明方面哪里出错了?
评论 (0)