2016-06-19 1 views
2

사용자가 유사한 색상의 개체를 선택해야하는 단일성을 사용하여 2D 게임을 만들었으며 사용자가 4 초 이상 색상을 선택할 수없는 경우 힌트를 표시하려고합니다.5 초 이상 활동하지 않을 때 힌트를 표시하는 방법은 무엇입니까?

사용자가 임의로 조합을 식별 할 수없는 경우 가능한 조합을 강조 표시하여 캔디 크래시가 힌트를 표시하는 시스템을 표시하는 캔디 크래시 힌트와 비슷한 것을 원합니다.

내가 힌트를 표시 할 수 있도록 사용자가 비활성 상태인지 찾는 방법을 알아낼 수 없습니다.

누군가가 나를 알아 내면 도와 주시면 감사하겠습니다. 미리 감사드립니다.

+1

정확한 답을 표시하십시오. 올바른 두 가지가 있습니다 ... – matiaslauriti

답변

1

나는 사용자가 무언가를하는 당신의 코드에서 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()가 한 번 호출됩니다. 그런 다음 사용자가 무언가를 수행 할 때까지 다시 호출하지 않습니다.

+0

이것은 절대적으로 좋은 생각입니다. OP가 확실히 이것을해야합니다! – Fattie

0

당신은 DateTime 유형을 사용하고 Update에 설정하므로 사용자 나던 아무것도 할 때 DateTime (현재)와 저장 DateTime이 차이 5 초 더 많거나 같은 경우, 당신은 당신이 보여이, 모든 프레임을 볼 수 있습니다 .

사용자가 터치하면 사용자가 완료했다고 표시하므로 다음 프레임에서는 터치하지 않은 것으로 보이며 다시 DateTime을 설정하고 5 초를 초과하는지 확인합니다.

내가 무슨 뜻입니까?

수익률이 5 초인 일부 Coroutines (WaitForSeconds)를 사용할 수 있으며 5 초를 넣을 수 있습니다. 산출량을 계속하면 힌트가 표시됩니다.

관련 문제