-
내일배움캠프 10일차 TIL - EventTrigger 스크립트로 등록하기Unity/오늘 알아낸 것 2023. 8. 17. 22:08
예전에 EventTrigger를 사용해서 인스펙터에 하나하나 메서드를 등록 해본적 있었다
그때 스크립트로 자동화 하면 좋겠다 싶어서 오늘 한번 찾아봤다
using System; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; public class Button : MonoBehaviour { public Action<BaseEventData> voidAction = (BaseEventData arg) => { }; EventTrigger trigger; public void Init(Action<BaseEventData>[] actions) { trigger = GetComponent<EventTrigger>(); EventTriggerType[] types = new EventTriggerType[4] { EventTriggerType.PointerEnter, EventTriggerType.PointerExit, EventTriggerType.PointerDown, EventTriggerType.PointerUp }; for (int i = 0; i < types.Length; i++) { EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = types[i]; UnityAction<BaseEventData> unityAction = actions[i].Invoke; entry.callback.AddListener(unityAction); trigger.triggers.Add(entry); } } }
using System; using UnityEngine; using UnityEngine.EventSystems; public class AlphaButton : Button { private void Start() { base.Init(new Action<BaseEventData>[4] { voidAction, voidAction, voidAction, (BaseEventData arg) => { Debug.Log("Hello"); } } ); } }
Button이 부모 클래스
AlphaButton이 자식클래스이다
AlphaButton에서 기능을 구현하고 그 기능을 부모 Init()에 다 넣으면 된다
그러면 부모가 기능을 받아서 이벤트 트리거에 차례대로 등록해준다
Enter, Exit, Down, Up
일단 간단하게 써봤는데 써보고 불편하면 바꿔봐야겠다
'Unity > 오늘 알아낸 것' 카테고리의 다른 글
내일배움캠프 19일차 TIL - 시네머신 카메라 노이즈 찍먹해보기 (0) 2023.08.26 내일배움캠프 17일차 TIL - 시네머신+타임라인 찍먹 해보기 (0) 2023.08.24 내일배움캠프 9일차 TIL - 뒤끝챗 알아보기 1 (0) 2023.08.16 내일배움캠프 8일차 TIL - 뒤끝 베이스 알아보기 (0) 2023.08.15 내일배움캠프 7일차 TIL - 뒤끝 시작해보기 (0) 2023.08.14