[UniRx] UniRx에 대해서 알아보기
·
STUDY/유니티
UniRx는 유니티에서 캐릭터가 목표지점에 도착했을때를 알리기위해서 어떻게 해야하는지를 검색해보다가 접하게된 라이브러리입니다. UniRx는 .NET Reactive Extensions를 유니티에 맞게 다시 구현한 것으로, 여기서 RX는 비동기 프로그래밍과 Observable 시퀀스를 이용해 이벤트를 처리하기위한 라이브러리입니다. RX(ReactiveX) : observer 패턴 + iterator 패턴 + functional 프로그래밍 의 조합이라고하는데 ㅎㅎㅎㅎ 정말 말만 봐도 어렵네요! 더 자세하게 봅시다! observer패턴은 - 관찰차패턴으로써 특정 이벤트가 일어나는것을 감시 iterator 패턴은 - 집합체안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공 - 집합체 내에서 어떤 식..
유니티 Hierarchy 최적화
·
PROJECT/유니티
유니티 3D 게임 프로젝트를 진행하게되면서 최적화의 중요성을 많이 알게되었습니다. 빌드자체에서 걸리는 시간이라던가 게임플레이 도중에 발생하는 지연이라던가 그런것들을 보며 구현도 중요하지만 구현한것을 원활하게 돌아갈 수 있도록 최적화하는것이 정말 중요하구나를 깨달으며 프로젝트에 적용한 최적화 방법을 소개할까 합니다. 부모-자식 간의 관계를 최소화로 하자 유니티에서 Hierarchy의 depth가 깊어지면 깊어질 수록 부모의 결과를 전파하기 위한 계산이 추가됩니다. 부모에 대한 position이나 rotation 등 정보가 변경되면 자식들에게도 메세지를 보내게 되므로 성능에는 악영향을 끼치게됩니다. 그래서 저는 프로젝트내에서 건설과 관련된 오브젝트를 맡았었는데.. 왼쪽이 이전에 있던 오브젝트 하나이고, 오른..
[텍스처 최적화]스프라이트 아틀라스 사용법
·
STUDY/유니티
- Texture 또는 Material이 다를 경우 별도의 Draw call이 된다. 유니티는 씬의 Texture 또는 Material에 대해 별도의 Draw call을 발행합니다. 참고로 Draw call은 실시간으로 카메라를 통해 한 프레임의 화면을 만들어 내는 동안에 CPU가 GPU에게 오브젝트를 그려라 라는 명령을 내리는 것입니다. 이 DrawCall이 늘어나게되면 자동으로 GPU가 할 일이 늘어나게되며 성능이 떨어지게됩니다. 이런 경우에는 스프라이트 아틀라스를 써서 줄이는 방법이 있습니다. (2D 프로젝트에만 적용가능) 스프라이트 아틀라스(Sprite Atlas) 는 여러 개의 텍스처를 단일 텍스처로 결합하는 에셋입니다. Unity는 여러 개의 드로우 콜을 발행하는 대신 이러한 단일 텍스처를 호..