Я попытался дать задержку моей функции в Unity с использованием языка C#. Используя Invoke
, мне удалось добавить задержку, когда курсор перемещен в определенную область. Однако теперь мне нужно отменить Invoke
, когда курсор перемещается из этой определенной области. Идея заключается в том, что, когда я случайно перемещаю курсор в область, я могу отменить любую функцию, вызываемую там. Вот мой текущий код.Активировать и деактивировать функцию вызова
void SceneCall(){
Application.LoadLevel (MainMenu);
}
void SceneCallIn(){
Invoke ("SceneCall", 3f);
}
if (_newGameButton.Contains (Event.current.mousePosition)) {
SceneCallIn();
}
Я пытался использовать CancelInvoke()
, как еще, и он даже не хочет, чтобы вызвать больше, когда я двигаю курсор _newGameButton
потом. Как вы отменяете Invoke, а затем активируете его еще раз? Благодарим за ваш ответ.
EDIT: Как @Programmer говорит в комментариях, то, что я точно хочу сделать, это когда моя мышь находится в определенной точке, таймер начнет подсчет. Через 3 секунды будет загружена MainMenu
. Пока таймер подсчитывается, и указатель удаляется от этой определенной позиции, я хочу, чтобы таймер остановился, и я не хочу, чтобы сцена MainMenu
была загружена больше.
Хм, когда вы снова вызываете «invoke», он просто вызовет его снова - никаких проблем. – Fattie
Решение: ** добавить Debug.Log ("a"); и Debug.Log ("b"); и Debug.Log ("c"); ** строки кода во всех трех функциях, и вы будете в состоянии понять, что происходит. вероятно, он делает что-то «вы не понимаете», вы знаете? – Fattie
Я сделал правильную вещь, чтобы положить CancelInvoke() после else {} ниже if (_newGameButton.Contains (Event.current.mousePosition))? потому что он немедленно отменяет Invoke еще до того, как я переместил курсор на _newGameButton? – Mikuriin