C#言語を使用してUnityで自分の関数に遅延を与えようとしました。 Invoke
を使用することで、カーソルが特定の領域に移動したときに遅延を追加することができました。しかし、カーソルがその特定の領域から移動されたときに、Invoke
を取り消す必要があります。アイデアは、誤ってカーソルをその領域に移動すると、そこに呼び出されている機能があれば取り消すことができます。 ここに私の現在のコードがあります。起動関数の有効化と無効化
void SceneCall(){
Application.LoadLevel (MainMenu);
}
void SceneCallIn(){
Invoke ("SceneCall", 3f);
}
if (_newGameButton.Contains (Event.current.mousePosition)) {
SceneCallIn();
}
私は他のCancelInvoke()
を使用することを試みたが、それも私がその後_newGameButton
に私のカーソルを移動すると、もう起動したくありません。 Invokeを取り消してもう一度起動しますか?お返事ありがとうございます〜
EDIT:Like @Programmerはコメントで、私がしたいことは、私のマウスが特定の位置にあるときにタイマがカウントを開始するときです。 3秒後に MainMenu
シーンがロードされます。タイマーがカウントしている間にポインタがその特定の位置から離れると、タイマーを止めたいので、MainMenu
シーンをもう読み込まないようにします。
ええと、「呼び出し」をもう一度呼び出すと、もう一度呼び出します。問題ありません。 – Fattie
解決方法:** Debug.Log( "a")を追加します。 Debug.Log( "b"); Debug.Log( "c"); **の3行のコード行を使用すると、何が起きているか把握することができます。それはあなたが知っている "あなたが気づいていない"何かをしている可能性がありますか? – Fattie
if(_newGameButton.Contains(Event.current.mousePosition))の下のelse {}の後にCancelInvoke()を置くのに正しいことをしましたか?カーソルを_newGameButtonに移動する前でも即座にInvokeをキャンセルするからです。 – Mikuriin