유니티

패스트캠퍼스 환급챌린지 25일차 : 한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지 강의 후기

hokim 2025. 12. 6. 18:22

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://fastcampus.info/4oKQD6b

 

학습시작
학습종료
수강인증

 

학습 인증샷

 

오늘은 디자인 패턴을 마저 들었고, 옵저버 패턴과 unirx에 대해 배웠다.

 

옵저버 패턴은 특정 오브젝트의 상태가 변하는 것에 따라 동작해야하는 경우, 해당 오브젝트를 직접 참조하여 지속적으로 상태를 확인하는것이 아니라, 관찰자를 지정하여 오브젝트의 상태가 변하는 순간 관찰자에게 메세지를 전달하는 방식의 디자인 패턴이다. 

보자마다 delegate가 생각났다. 둘다 폴링방식이 아니라 시그널 방식으로 함수를 실행하는데, 차이가 뭘까? 옵저버 패턴은 말그대로 디자인 패턴이고, delegate는 단순 도구다. 그러니까 따지고보면 delegate를 이용해서 옵저버 패턴을 구현할 수도 있는 것이다. 

 

UniRx는 유니티에서 닷넷의 Reactive Extentons를 구현한 오픈소스 라이브러리를 말한다. 옵저버 패턴과 Linq 스타일의 쿼리 연산자를 이용해 비동기 및 이벤트 기반 프로그래밍을 하기 위해 사용하며, 기존의 절차적 구조의 코드를 선언적으로 작성 가능하다.

사실 설명만 듣고 머릿속에 물음표밖에 안남았는데, 예제 코드를 보고 바로 이해됐다.

private void Start(){
    this.UpdateAdObservable()
        .Where(_=>Input.GetKeyDown(Keycode.D))
        .Subscribe(_=>Debug.Log("INPUT"));
}

이렇게 하면 Update() 안에서 매번 입력을 확인하지 않아도 유저 인풋 이벤트가 일어나면 "INPUT" 로깅을 찍을 수 있다.

 

근데 이 강의 자체가 좀 오래된 강의여서 요즘도 UniRx를 많이 쓰는지, 아니면 다른게 더 유행인지 궁금해서 찾아봤는데, 요즘은 주로 UniTask를 사용한다고 한다. 근데 유니티에서 자체적으로 구현한 비동기라이브러리인 Awaitable도 뜨고 있는 것 같다.

근데 Awaitable은 기능이 적고 GC 최적화가 잘 안되어있는 데 반해, UniTask는 기능이 많고 빠르며 GC최적화가 매우 잘되어있는 것 같다.

이것저것 찾아본 결과 개인적으로 UniTask를 좀 더 공부해봐야겠다는 생각이 들었다. UniRx의 이벤트 기반 코드가 상당히 편리해보이는데 실질적으로 많이 사용되는 라이브러리를 사용하는게 여러모로 이득일 것 같다.

 

내일부터는 뱀서라이크 확장을 수강할 예정이다!