오-개) EventHandler

astray36·2021년 7월 13일
0

오늘의 개발

목록 보기
9/10

생각보다 복잡하다. 내가 못쓰는 건지 모르겠는데 그 EventSystem이 적용되는 범위가 애매하다.

내가 의도한것은 한 스크립트에서 해당 오브젝트의 EventTrigger를 가져와 해당하는 오브젝트만 인터렉션을 발생시키는 것이다.

    EventTrigger highlightTrigger = currentContent.GetComponent<EventTrigger>();
    EventTrigger.Entry highlightEntry = new EventTrigger.Entry();
    highlightEntry.eventID = EventTriggerType.PointerEnter;
    highlightEntry.callback.AddListener((data) => { HighlightThumbnail((PointerEventData)data); });
    highlightTrigger.triggers.Add(highlightEntry);
    

이런식으로 스크립트를 통해 작성했다.

내 생각으로는 해당 오브젝트의 트리거만 가져와서 이벤트를 발생시킨다고 생각했는데 pointerEvent는 이런식으로 작동하는 것 같지 않다. 그 범위가 어디까진지 정확하게 알 수 없었다. 이전에 작성했던 그것도 틀린 방법이었다.

결국

public void OnPointerEnter(PointerEventData eventData)
{
    //레이캐스트가 썸네일 위에 올라갔을 때만 하이라이트 이미지 활성화
    if(eventData.pointerEnter == currentObj && !isSelected)
    {
        highlightImage.SetActive(true);
    }
}

이런식으로 쓰게 됬다. PointerEnter가 발생하는 것을 제어하려고 했던 부분을 포기하고 eventData를 받아올 때 그 오브젝트를 내가 원하는 오브젝트와 비교해서 확인 후 원하는 행동을 하는 것이다. 사실 이 방법을 미리 알았더라면 진작 이 방법을 썻었을텐데, 이거 하나하는데 쓸데없이 시간을 너무 많이 썻다.

아무튼 첫번째 방법이 안먹힌 것은 아직 이해가 잘 가지 않는다. 이미 같은 방식으로 OnPointerDown을 가져와서 특정 버튼을 해당 오브젝트가 아닌 다른 오브젝트에서 가져와서 사용하고 있었고 그 부분에서는 아무런 문제가 발생하지 않았다.

이 부분에 대해 더 정확한 정보를 얻게 되면 업데이트 하겠다.

profile
한줄로는 어렵다

0개의 댓글