2016-11-21 1 views
1

개체를 활성화하거나 비활성화 할 때 unity3d의 문제가 발생했습니다. 키를 누를 때 객체를 활성화하고 다시 키를 누르면 비활성화됩니다.Input.GetKey 키 누름이 여러 번 true를 반환합니다.

내 코드가 괜찮다고 생각합니다. 하지만 제대로 작동하지 않습니다. 처음 버튼을 누르면 객체가 활성화되고 때로는 키 누르기 작업이 즉시 비활성화되는 경우가 있습니다. 나는 그것이 Update() 기능 때문이라고 생각합니다. 모든 프레임에서 실행됩니다. 내가하는 일을 모릅니다.

코드 :

public class A : MonoBehaviour 
{ 
    [SerializeField] 
    private GameObject invSystem; 
    [SerializeField] 
    bool buttonCheck; 

    void Update() 
    { 
     if (Input.GetKey(KeyCode.P)) 
     { 

      if (!buttonCheck) 
      { 
       invSystem.SetActive(true); 
       buttonCheck = true; 
      } 

      else 
      { 
       invSystem.SetActive(false); 
       buttonCheck = false; 
      } 
     } 
    }   
} 

답변

4

사용 GetKeyDown relased 다시 누를 때까지 만 프레임에서 한 번만 사실 일 것입니다. GetKey은 계속 누르고 있으면 true를 반환합니다. 이렇게하면 두 번 이상 트리거되고 프레임에서 여러 번 실행되는 if 문을 true로 만듭니다.

if (Input.GetKey (KeyCode.P))if (Input.GetKeyDown(KeyCode.P))

관련 문제