激活和取消激活调用功能

时间:2016-06-23 13:14:00

标签: c# unity3d

我试图使用C#语言延迟我在Unity中的功能。通过使用Invoke,我实现了在光标移动到某个区域时添加延迟。但是,现在我需要在光标从某个区域移动时取消Invoke。我的想法是,当我不小心将光标移动到该区域时,我可以取消在那里调用的任何函数。 这是我目前的代码。

void SceneCall(){
    Application.LoadLevel (MainMenu);
}

void SceneCallIn(){
    Invoke ("SceneCall", 3f);
}
if (_newGameButton.Contains (Event.current.mousePosition)) {
        SceneCallIn();
    }

我尝试使用CancelInvoke()作为别的,甚至在我之后将光标移动到_newGameButton时甚至不想再调用它。你如何取消一次Invoke然后再次激活它?谢谢你的回答〜

编辑:就像@Programmer在评论中说的那样,我想要做的就是当我的鼠标位于某一点时,计时器将开始计数。 3秒后 将加载MainMenu场景。当计时器正在计数并且指针移离该特定位置时,我希望计时器停止,我不希望再加载MainMenu场景。

2 个答案:

答案 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,这样您就可以删除已注册的每种方法。