我试图使用C#语言延迟我在Unity中的功能。通过使用Invoke
,我实现了在光标移动到某个区域时添加延迟。但是,现在我需要在光标从某个区域移动时取消Invoke
。我的想法是,当我不小心将光标移动到该区域时,我可以取消在那里调用的任何函数。
这是我目前的代码。
void SceneCall(){
Application.LoadLevel (MainMenu);
}
void SceneCallIn(){
Invoke ("SceneCall", 3f);
}
if (_newGameButton.Contains (Event.current.mousePosition)) {
SceneCallIn();
}
我尝试使用CancelInvoke()
作为别的,甚至在我之后将光标移动到_newGameButton
时甚至不想再调用它。你如何取消一次Invoke然后再次激活它?谢谢你的回答〜
MainMenu
场景。当计时器正在计数并且指针移离该特定位置时,我希望计时器停止,我不希望再加载MainMenu
场景。
答案 0 :(得分:4)
如果你真的想要“翻转”等等,这里有一个完整的教程:
https://stackoverflow.com/a/36046495/294884
在你能做到这一点之前,你真的必须成为所有这一切的专家。
我必须再次告诉你:
15年来,你不应该在界面中出于任何原因使用翻转。
答案 1 :(得分:3)
昨天我遇到了同样的问题,但我解决了再次调用invoke方法的问题。
这是我的代码:
public void OnGazeEnter()
{
InvokeRepeating("OnGazeStay", 0.0f, 1.0f / 30.0f);
}
public void OnGazeExit()
{
CancelInvoke("OnGazeStay");
}
在您的情况下,如果您想注册多种方法,则必须保存某种List<String> myMethods
,这样您就可以删除已注册的每种方法。