방과후 수업에서 EventManager에 관한 설명을 들었다.
EventManager의 코드는 아래 링크를 참고하여 타이핑하며 분석하고 배웠다.
http://bernardopacheco.net/using-an-event-manager-to-decouple-your-game-in-unity
Using an Event Manager to Decouple your Game in Unity | Bernardo Pacheco
A common way to compose a game scene in Unity is attaching one GameObject to another to share methods and properties. This practice causes a highly coupled architecture that is hard to maintain. Unity does provide a Messaging System but it limits the param
bernardopacheco.net
EventManager은 게임 내 모든 오브젝트 간 상호작용 이벤트를 다루는 클래스라고 정의된다.
만약 게임에서 Player가 적에게 맞았을 때 자신이 맞았다고 Hit 이벤트를 발동 시키면 이에 연결된 각 기능을 하는 함수들을 작동시킨다고 보면 된다고 한다.
지금까지 if문을 Update( )에 사용하여 매프레임마다 맞았어? 아 안 맞았어? 확인하는 방식으로 개발을 하였는데 계속해서 확인을 해준다면 비효율적이기 때문에 EventManager를 활용하여(자진신고를 하여 이벤트를 가져온다) 성능을 상향시켜주는 것이다.
100마리의 몬스터를 모두 없애야 할 경우 OnDead( )를 한 번에 호출하는 등의 기능에 활용할 수 있다.
EventManager은 Dictionary를 사용하는데 Dictionary는 데이터를 [키, 값] 쌍으로 담아두는 해시(Hash) 구조를 가지고 있어 키를 사용해 데이터를 빠르게 찾을 수 있다. 키를 얻으면 그 값을 바로 검색하여 두 번의 연산이 필요하다고 보면 된다.
EventManager은 객체의 상태가 OnDead( )라고 호출이 되면 그에 연결된 함수들에 연락이 가고, 자동으로 그 함수들이 실행되는 Observer Pattern(옵저버 패턴)을 가진다.
MVC 패턴에 대해서도 언급이 잠시 되었었는데 대학교 4학년때 배우는 것이라고 한다. 천천히 찾아보아야겠다.
'Unity, C#' 카테고리의 다른 글
[Unity C#] Addressables Asset System (어드레서블 에셋 시스템) (0) | 2022.11.29 |
---|---|
[C#] 암호화, 복호화 (0) | 2022.11.07 |
[Unity C#] 변수와 자료형, 대입 연산자, 조건문, 반복문 (0) | 2022.10.11 |
[22.09.21] Unity 스크립트에서 Scene Popup하기 (0) | 2022.09.21 |
22.09.14 Coupling 커플링 (0) | 2022.09.14 |