반응형
728x170
안녕하세요 유니티 비기너입니다.
이번 시간에는 IsPointerOverGameObject에 대해 알아보겠습니다.
터치로 실행되는 오브젝트와 UI 이미지, 버튼 이벤트로 실행되는 오브젝트들이 존재할 때
각각의 오브젝트가 겹쳐있는 경우 한쪽 기능만 실행을 시키고 싶지만
양쪽 모두 실행이 되어버리는 경우가 종종 있습니다.
IsPointerOverGameObject 기능을 활용하면 위의 문제를 해결할 수 있습니다.
※ IsPointerOverGameObject는 pointer가 UI에 있는 경우 True를 아닌 경우에는 false를 반환합니다.
결과 화면
화면 전체 구간에 마우스 클릭 시 총알을 발사하는 스크립트가 포함되어있습니다.
적용 전
IsPointerOverGameObject 가 적용되지 않은 경우
버튼 이벤트와, 스크립트에 적용된 총알 생성하는 코드 부분이 같이 실행됩니다.
적용 후
IsPointerOverGameObject 가 적용되어 있는 경우
스크립트에 적용된 if문에 IsPointerOverGameObject 가 false 을 반환하여 총알을 생성하지 않습니다.
스크립트
public class TapManager : MonoBehaviour
{
public Transform plane;
public GameObject bullet;
void Update() {
if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject() ) {
Instantiate(bullet, plane.position, Quaternion.identity);
}
}
}
화면 전체에 마우스 클릭 시 총알을 생성하는 코드이며 IsPointerOverGameObject를 활용하여
UI버튼 영역에서는 false를 가져와 총알을 생성하지 않습니다.
반응형
그리드형
'유니티실습' 카테고리의 다른 글
유니티 델리게이트 액션 활용해보기 (0) | 2021.01.04 |
---|---|
유니티 UI 버튼 이미지 swap (0) | 2020.12.07 |
유니티 객체 합치기 Merge (0) | 2020.11.23 |
유니티 ScriptableObject를 활용한 오브젝트 생성 (0) | 2020.11.09 |
유니티 에셋스토어 퍼블리셔 로그인 위치 찾기 (0) | 2020.11.07 |