나는 사용자가 무언가를하는 당신의 코드에서 EVERYWHERE라고 부를 필요가있는 Joe Blow와 동의하지 않습니다. 사용자가 할 수있는 일은 키보드의 키를 누르거나 (게임 패드와 컨트롤러에 포함) 마우스를 움직이는 것입니다 (마우스가 움직일 때 마우스가 움직이기 때문에 시뮬레이트됩니다). 따라서 다음과 같은 단일 클래스가있는 경우 :
using UnityEngine;
public class TestInActive : MonoBehaviour {
private Vector3 prevMousePosition = Vector3.zero;
void ShowGameHintInvoke()
{
CancelInvoke();
Invoke("GameHint", 5);
}
void GameHint()
{
Debug.Log("This is a Hint");
}
// Update is called once per frame
void Update() {
if (Input.anyKeyDown || Input.mousePosition != prevMousePosition)
ShowGameHintInvoke();
prevMousePosition = Input.mousePosition;
}
}
잘 작동합니다. 사용자가 5 초 동안 비활성 상태가되면 ShowGameHintInvoke()가 한 번 호출됩니다. 그런 다음 사용자가 무언가를 수행 할 때까지 다시 호출하지 않습니다.
정확한 답을 표시하십시오. 올바른 두 가지가 있습니다 ... – matiaslauriti