본문 바로가기

Unity3D/C#

유니티 마우스 왼쪽/오른쪽/가운데(휠) 버튼 클릭 값 받기

반응형

 

 

어느 게임이든 PC 게임이라면, 조작할 때 가장 중요한 요소는 마우스입니다. 메뉴를 선택하거나 아이템을 사용하거나 장비를 장착하거나 해제하거나, 등등. 선택, 사용, 등 조작을 하려면 마우스를 이용하는 것이 현재 우리에게 가장 익숙하고 편합니다. 마우스 구성은 마우스 바닥에 움직임을 감지하는 광이나 볼이 있고 위에 클릭했는지에 대한 입력 값을 받을 수 있는 버튼이 보통 3개가 있습니다. 왼쪽, 오른쪽, 휠 버튼이 있고 보통 마우스는 왼쪽 버튼으로 클릭하여 선택합니다. 유니티에서는 이 버튼 3개에 대한 입력 값을 받아서 사용할 수 있는데 GetMouseButton이라는 bool 값을 이용하면 됩니다. GetMouseButton은 매개변수로 int 값을 받는데 각 버튼 별로 0(왼쪽), 1(오른쪽), 2(가운데)를 넣어주면 해당 버튼에 대한 입력 값을 반환합니다. 마우스를 처음 눌렀을 때와 누르고 있을 때, 눌렀다가 땠을 때를 인식할 수 있습니다.

 

 

C# (UNITY 3D)

 

 

 

마우스의 왼쪽, 오른쪽, 가운데(휠)을 클릭했을 때 마우스 이미지에 표시하고 눌린 버튼에 대해 Text로 표시하는 예시입니다. 마우스를 눌렀을 때(GetMouseButtonDown), 누르고 있을 때(GetMouseButton), 땔 때(GetMouseButtonUp)의 입력 값을 이용합니다. 마우스 이미지에 표시는 단순 게임 오브젝트를 끄거나 켜서 표시합니다.

 

 

 

using UnityEngine.UI;

 

현재 마우스의 어떤 버튼을 눌렀는지를 표시용 Text를 사용하기 위해 UnityEngine.UI를 사용합니다. 

 

 

할당

 

각 오브젝트를 스크립트에 할당해 줍니다.

 

 

오브젝트 구조

 

오브젝트 구조는 관리하기 편하게 한곳에 모아두고 Left, Right, Wheel을 표시해 줄 게임 오브젝트는 기본적으로 꺼둡니다.

 

 

 

 

    public GameObject mouse_left;
    public GameObject mouse_right;
    public GameObject mouse_wheel;
    public Text text_mouse;

    private void Update()
    {
        Check_GetMouseButton();
    }

    //CodeFinder 코드파인더
    //From https://codefinder.janndk.com/ 
    private void Check_GetMouseButton()
    {
        string message = "";

        if (Input.GetMouseButtonDown(0))
        {
            mouse_left.gameObject.SetActive(true);
        }
        else if (Input.GetMouseButtonUp(0))
        {
            mouse_left.gameObject.SetActive(false);
        }
        else if (Input.GetMouseButton(0))
        {
            message += "left";
        }

        if (Input.GetMouseButtonDown(1))
        {
            mouse_right.gameObject.SetActive(true);
        }
        else if (Input.GetMouseButtonUp(1))
        {
            mouse_right.gameObject.SetActive(false);
        }
        else if (Input.GetMouseButton(1))
        {
            message += ((message.Equals("") ? "" : "\n") + "right");
        }

        if (Input.GetMouseButtonDown(2))
        {
            mouse_wheel.gameObject.SetActive(true);
        }
        else if (Input.GetMouseButtonUp(2))
        {
            mouse_wheel.gameObject.SetActive(false);
        }
        else if (Input.GetMouseButton(2))
        {
            message += ((message.Equals("") ? "" : "\n") + "wheel");
        }

        if (message.Equals(""))
        {
            message = "Please Click!";
        }
        text_mouse.text = message;
        Debug.Log(message); 
    }

 

변수(variable)

mouse_left(GameObject) : 왼쪽 마우스 표시용 게임 오브젝트
mouse_right(GameObject) : 오른쪽 마우스 표시용 게임 오브젝트 
mouse_wheel(GameObject) : 가운데(휠) 마우스 표시용 게임 오브젝트
text_mouse(Text) : 입력 값이 있는 버튼 표시

 

함수(function)

Check_GetMouseButton : 마우스 입력이 있는지 체크하고 있을 경우 어떤 입력이 있었는지 확인 후 UI에 표시

 

 

 

Get Mouse Input / 마우스 클릭 인식

 

 

 

반응형