2016.01.11 14:10

유니티에서 ui를 클릭 혹은 터치해도 게임 중 입력 이벤트를 처리하는 부분에서 계속 문제가 발생했다. 


게임 ui를 유니티의 ui로 만들지 않았을때는 몰랐는데, 이거 어떻게 처리해야 할지 한동안 고민이 많았는데...


EventSystem.current.IsPointerOverGameObject 라는 함수가 있는지 몰라서 한참 고생했네;;


아래와 같은 클래스를 하나 추가해서 처리.

using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections;

public class InputEventManager : MonoBehaviour {
     public bool GetMouseDown(int _idx){
        if (EventSystem.current.IsPointerOverGameObject())
            return false;

        return Input.GetMouseButtonDown(_idx);
    }

    public bool GetMouseUp(int _idx){
        if (EventSystem.current.IsPointerOverGameObject())
            return false;

        return Input.GetMouseButtonUp(_idx);
    }

    public bool GetMouse(int _idx){
        if (EventSystem.current.IsPointerOverGameObject())
            return false;

        return Input.GetMouseButton(_idx);
    }

    static InputEventManager mInst;
    public static InputEventManager Inst {
        get{
            if (mInst == null) {
                GameObject go = new GameObject ();
                go.name = "InputEventManager";
                mInst = go.AddComponent<InputEventManager> ();
            }
            return mInst;
        }
    }
}




이전 버전에서는 IsPointerOverEventSystemObject  라는 이름으로 쓰였는데, 이름이 조금 달라져서 애매한데, 일단 잘 작동은 하는 듯. 

저작자 표시 비영리 동일 조건 변경 허락
신고