【发布时间】:2018-04-13 07:56:48
【问题描述】:
我试图在 Unity 中使用 C# 语言延迟我的函数。通过使用Invoke,我实现了在光标移动到某个区域时添加延迟。但是,现在我需要在光标从该特定区域移动时取消Invoke。这个想法是,当我不小心将光标移动到该区域时,我可以取消那里调用的任何函数。
这是我当前的代码。
void SceneCall(){
Application.LoadLevel (MainMenu);
}
void SceneCallIn(){
Invoke ("SceneCall", 3f);
}
if (_newGameButton.Contains (Event.current.mousePosition)) {
SceneCallIn();
}
我尝试将CancelInvoke() 用作else,然后当我将光标移动到_newGameButton 时,它甚至不想再调用了。如何取消调用然后再次激活它?谢谢你的回答~
编辑:就像@Programmer 在 cmets 中所说,我真正想做的是当我的鼠标位于某个点时,计时器将开始计数。 3 秒后
MainMenu 场景将被加载。当计时器正在计数并且指针从该特定位置移开时,我希望计时器停止并且我不想再加载 MainMenu 场景。
【问题讨论】:
-
嗯,当你再次调用“invoke”时,它只会再次调用它——没问题。
-
我做对了把 CancelInvoke() 放在 else {} 下面 if (_newGameButton.Contains (Event.current.mousePosition)) 吗?因为它甚至在我将光标移动到 _newGameButton 之前就立即取消了调用?
-
@Mikuriin 让我明白这一点。当您的鼠标位于某个点时,计时器将开始计数。 3 秒后
MainMenu场景将被加载。当计时器正在计数并且指针从该特定位置移开时,您希望计时器停止并且您不想再加载MainMenu场景? -
天哪,对不起,我什至无法正确解释。是的,这就是我的意思@Programmer
-
好的。你在哪个方法中放置了 if-else 块?