EventFlow
EventFlow 기술포스팅
EventFlow
글에 앞서..
이 문서는 EventFlow API Docs가 아닌 기술/개발 포스팅입니다. API Docs 는 하이퍼링크를 통해 확인하실 수 있습니다.
EventFlow 는 무엇인가요?
EventFlow는 Unity Engine에서 이벤트 기반 프로그래밍을 쉽게 구현할 수 있게 해주는 라이브러리입니다.
디자인패턴을 이용하여 이벤트 기반 프로그래밍을 구현하는것은 단순하면서도 여러가지 고민해야 할 부분들이 있습니다.
### 고민해야 할 부분
- 협업에 사용되는 코드의 경우 패턴이 필요합니다. 그에 맞춰 사용하기 최대한 쉽고, 직관적인 방식으로 작성해야합니다.
- 확장이 용이해야합니다.
- Roslyn 을 도입할 수 있는 설계를 작성합니다.
- 이벤트는 제로 GC여야만 합니다.
따라서 EventFlow는 위 사항들을 고려하고, 단순화된 이벤트 관리방식을 채택하여 최대한 API를 단순화 시켰습니다.
단순화된 이벤트 관리방식
- 이벤트 메시지 정의를 구조체 기반 인터페이스 상속으로 단순화
- 이벤트 메세지 구독(Lifecycle) 및 핸들링 방식을 단순화
- 단순한 메세지 전송 방식
인터페이스와 메세지
순환 메세지 전송 방지
순환메세지 전송 방지는 선택적 옵션입니다. 메세지 선언시 Attribute에 [Strict] 어트리뷰트를 사용하면 이 메세지는 이벤트를 핸들링하는 IEventListener<> 구현체에서 Braodcast 할 수 없게 됩니다.
이렇게 해야하는 이유는 순환 전송을 방지하기 위해서입니다. 순환 전송은 StackOverFlow 오류를 발생시킬 수 있으므로 주의해야합니다.
EventListener 안에서 Broadcast 하고싶지 않은 메세지는 또는 다음과 같이 정의할 수 있습니다.
1
2
3
public interface IEventMessageStrict : IEventMessage{
}
구조체 강제 및 생성자 지원
###
자세히 알아보기
EventFlow에 대한 자세한 문서는 공식문서을 참고해주세요
This post is licensed under
CC BY 4.0
by the author.