Unity UI 메시징 시스템 안내서
이 문서는 Unity의 새로운 UI 시스템과 메시징 시스템에 대해 설명합니다. 아래의 내용을 통해 시스템의 구조와 커스텀 메시지를 정의하는 방법을 배울 수 있습니다.
1. 메시징 시스템 개요
Unity의 메시징 시스템은 기존의 SendMessage
함수를 대체하기 위해 설계되었습니다. 이 시스템은 순수 C#으로 작성되었으며, 메시지 전송과 관련된 문제를 해결하는 것을 목표로 합니다. 메시징 시스템은 MonoBehaviour에 구현할 수 있는 커스텀 인터페이스를 통해 작동합니다. 특정 게임 오브젝트로 호출이 이루어지면, 해당 게임 오브젝트에서 구현한 모든 컴포넌트가 메시지를 수신하게 됩니다.
메시징 시스템은 다음과 같은 기능을 제공합니다:
- 커스텀 사용자 데이터 전달
- 이벤트 전파를 위한 게임 오브젝트 계층 구조 지원
- 주어진 메시징 인터페이스를 구현하는 게임 오브젝트 검색을 위한 헬퍼 함수 제공
메시징 시스템은 UI 시스템에 국한되지 않고 일반 게임 코드에도 사용될 수 있도록 설계되었습니다.
2. 커스텀 메시지 정의하기
커스텀 메시지를 정의하는 과정은 간단합니다. UnityEngine.EventSystems
네임스페이스 내에 있는 IEventSystemHandler
라는 기본 인터페이스를 기반으로 커스텀 메시징 인터페이스를 생성합니다.
인터페이스 예제
public interface ICustomMessageTarget : IEventSystemHandler
{
void Message1();
void Message2();
}
위의 정의된 인터페이스는 메시징 시스템으로부터 이벤트를 수신하는 대상이 될 수 있습니다.
구현 예제
이제 MonoBehaviour 클래스에서 이 인터페이스를 구현할 수 있습니다.
public class CustomMessageTarget : MonoBehaviour, ICustomMessageTarget
{
public void Message1()
{
Debug.Log("Message 1 received");
}
public void Message2()
{
Debug.Log("Message 2 received");
}
}
위의 코드는 CustomMessageTarget
이라는 클래스를 정의하며, 두 개의 메시지 함수 Message1
과 Message2
를 구현합니다.
3. 메시지 전송
메시지를 보내기 위해서는 정적 헬퍼 클래스를 사용합니다. 헬퍼 클래스는 타겟 오브젝트, 사용자 특정 데이터, 그리고 수행할 함수 매핑이 필요합니다.
메시지 전송 예제
ExecuteEvents.Execute<ICustomMessageTarget>(target, null, (x,y) => x.Message1());
위 코드는 ICustomMessageTarget
인터페이스를 구현하는 모든 컴포넌트에 Message1
함수가 실행되도록 합니다.
4. 활용 사례
메시징 시스템을 활용하여 다양한 사용자 입력 이벤트를 처리할 수 있습니다. 예를 들어, UI에서의 입력 이벤트인 PointerEnter 및 PointerExit에 대해 적절한 반응을 구현할 수 있습니다.
사용 예시
- UI 버튼이 마우스 커서를 가리킬 때, 해당 버튼이 시각적으로 반응하도록 하거나 사운드를 재생합니다.
- 게임 오브젝트에 특정 이벤트가 발생했을 때, 관련된 다른 오브젝트에 메시지를 보내 특정 동작을 수행하도록 할 수 있습니다.
표
내용 | 설명 |
---|---|
메시징 시스템 | 동작이 우선시 되는 새로운 시스템 |
커스텀 사용자 데이터 | 사용자 정의 데이터를 전달할 수 있음 |
이벤트 전파 | 게임 오브젝트 계층구조 통해 이벤트 전파 |
일반 게임 코드 지원 | UI 시스템 외에도 일반 게임 코드로 사용 가능 |
ExecuteEvents | 메시지를 전송하는 헬퍼 클래스 |
결론
이 문서에서는 Unity의 메시징 시스템의 기본 구성과 커스텀 메시지를 정의하는 방법을 설명했습니다. 이를 통해 Unity UI나 일반 게임 코드에서 이벤트 처리를 효율적으로 수행할 수 있습니다. 여러분의 프로젝트에 이 시스템을 활용하여 더 나은 사용자 경험을 제공해 보세요!