본문 바로가기

반응형

유니티

(40)
유니티 최적화(5) - 프로파일러 사용법 프로파일러란? 프로파일러 툴은 유니티 엔진에서 제공하는 유니티로 개발하는 앱은 프로파일링 할 수 있는,즉 분석을 할 수 있는 Tool이다. 사용하려면 유니티 에디터에서 Window -> Analysis -> Profiler로 켜주면 된다(유니티 2019.4.21f1 버전) Timeline,Hierarchy,Raw Hierarchy 3가지 모드로 분석 할 수 있다. 이번 포스팅에선 Hierarchy로 해보겠다. 위의 Deep Profile을 눌러주면 모든 스크립트가 분석된다. 눌러주고 게임을 실행하면 아래와 같이 매 프레임별로 Performance를 측정해준다. 한 곳을 클릭하면 해당하는 프레임을 분석해준다. 한번 갑자기 Performance가 치솟은 곳을 클릭하면 위와같이 각 퍼센테이지별로 분석 할 수 ..
유니티 Sprite Atlas 유니티에는 다양한 최적화 기법이 있는데 이번 글에서는 Sprite Atlas에 대해 포스팅하고자 한다. 똑같은 기능을 제공하는 Sprite Packer라고 있긴하다. 근데 유니티 자체에서도 Legacy(구식)이라고 지정해놨고 개인적으로도 Atlas가 더 직관적이고 사용하기 편해서 웬만하면 Sprite Atlas로 쓰는게 좋지않을까 싶다. 어쨋든 현업에서 대부분 사용하고 있다고 하니 꼭 알아두자. Sprite Atlas란 스프라이트 아틀라스(Sprite Atlas) 는 여러 개의 텍스처를 단일 텍스처로 결합하는 에셋이다. Unity는 여러 개의 드로우 콜을 발행하는 대신 이러한 단일 텍스처를 호출함으로써 하나의 드로우 콜을 발행할 수 있다. 참고로 DrawCall은 모바일에선 최대 100안쪽으로 나오게 해..
유니티 UI(3) -POT/NPOT Texture 유니티 UI를 공부하면서 중요하다고 생각되는 내용들 적는 포스팅이다. 필기노트 같은거 POT(Power of Two) 텍스쳐 텍스쳐 가로/세로 크기가 2의 승수(1,2,4,8,16,32.....)인 텍스쳐 NPOT(Non-Power of Two) 텍스쳐 텍스쳐 가로/세로 둘중 크기가 하나라도 2의 승수가 아닌 텍스쳐 이것이 왜중요한가?? 텍스쳐건 뭐건 전부다 숫자(바이너리)로 이뤄져있다. 컴퓨터는 애초에 바이너리 데이터를 다루기가 훨씬 쉽다. NPOT 텍스쳐를 사용할 때 GPU는 텍스쳐와 가장 가까운 사이즈의 2의 승수를 찾아서 해당 텍스쳐를 그대로 복사한다. 즉 메모리에 2개의 텍스쳐가 올라가게 된다. 원본텍스쳐(NPOT)와 원본을 POT화시킨 텍스쳐 이렇게 2개. 즐 효율이 좋지않다. 모바일 게임에선..
유니티 UI(2)-이미지 Type 전편에 이어서 유니티 UI를 공부하면서 중요하다고 생각하는 것들 작성하는, 일종의 필기노트이다. Image Type Simple : 가장 일반적인 이미지 타입 , 비율에 맞게 스트레치됨 Sliced : 스프라이트를 9개의 영역으로 나누어 각자 다른 방식으로 리사이즈하는 방식, Sprite Editor에서 영역을 설정 할 수 있다. 현업에서 굉장히 자주 쓰이는 테크닉이라고 한다. 아래와 같이 Fill Center의 체크를 풀어줌으로써 중앙을 비울수 있다. Tiled : 위의 설정해논 영역중 중앙부분으로 일정하게 도배하는 이미지 타입니다 Filled : 말 그대로 채워주는 방식, 체력바같은거에 많이 쓴다. 각종 수치들을 건들여서 채워주는 방식을 정할 수 있다.
유니티 UI(1)-Vertex와 Canvas UI기초 다시 공부하면서 배운것들 정리하는,어떻게 보면 그냥 필기노트정도다. Vertex 3D 모델링의 가장 기본 단위 Vertex Buffer 렌더링에 사용할 버텍스를 모아 놓은 버퍼 캔버스에 내부적으로 존재한다(우리가 볼 순 없다) 씬에서 왼쪽위를 Shaded에서 Wireframe으로 바꿔주면 위와 같이 Vertex들을 볼 수 있다. Event System 클릭, 드래그 등등 이벤트들은 하나 또는 하나이상의 모듈을 통해 시스템에 전달되야 한다 그 모듈이 EventSystem에 있다 UI를 만들면 저절로 만들어진다 Canvas Screen Space - Overlay : 스크린 화면을 최상위에서 완전히 덮어서 렌더링하는 모드 Pixel Perfect : UI가 깨지지 않고 잘 나오지만 Performan..
Unity PlayerPrefs 활용 현재 만들고 있는 게임은 템플런 같은게임을 생각하며 만든게임이다. 튜토리얼을 따로 만들까 하다가 튜토리얼 후에 본게임으로 들어가게 구현하기로 했다. 템플런에서는 다운받고 첫판을 시작하면 튜토리얼 후에 본게임으로 들어간다. 삭제했다가 다시하면 다시 튜토리얼 부터 시작한다. 그렇기에 나도 삭제하고 다시 다운받으면 튜토리얼부터 시작하는걸로 구현하기로 했다. 이 때 다운받고나서 첫판인지 아닌지 PlayerPrfes를 활용해서 구분하겠다. PlayerPrefs말고도 Json,XML 등등 다양한 저장방식이 있다. 각각마다 장/단점이 있으므로 그때그때 고려해서 다른 저장방식을 사용해주자. 필자도 저번 프로젝트때에는 Json으로 암호화와 복호화까지 구현해서 플레이어 데이터를 저장했었는데 이번 프로젝트에선 간단한 Pla..
유니티 구글플레이 리더보드 연동 구글플레이 연동은 다 끝냈으니 이제 구글플레이 리더보드를 이용해서 랭킹시스템을 만들어보겠다. 우선 구글플레이 콘솔에 들어가서 자신이 만든 어플리케이션 설정으로 들어간다. 그 후 리더보드창에 들어가서 리더보드를 만들면 된다. 리더보드 생성을 누르면 이런 느낌으로 내 리더보드 상세설정을 설정해주고 생성하면 된다. 설정은 어려울게 없어서 자신이 구현하고 하는대로 설정해주면 된다. 리더보드를 다 만들었으면 리소스 보기 가면 이렇게 Android(XML)을 볼 수 있다. 처음에 구글플레이 연동을 해봤으면 알곘지만 Window->Google Play Gaems -> Set up -> Android Setup에 위 리소스를 복사해서 넣어주고 Set Up 버튼을 눌러주면 위와같이 Assets에 GPGSids라는 스크립..
유니티로 안드로이드 Alert Dialog 띄우기 수많은 시행착오 끝에 구글플레이로 로그인을 구현하였다. 그런데 처음에는 별 문제가 없는 줄 알았다. 그런데 와이파이나 데이터가 안터져도 정상적으로 구글플레이로 로그인이 되었다. 아마 구글플레이에서 휴대폰에 로컬로 계정정보를 저장시켜놓거나 그랬을 것이다. 하지만 나는 구글플레이 리더보드를 이용해서 랭킹도 검색하고 랭킹을 갱신하는 기능을 넣을 예정이다. 그렇기에 안정된 통신이 보장되어야 한다. 예전에 만들었던 게임에서도 네트워크 연결이 필수여서 네트워크를 검사한 후, 불안정하면 위와같은 팝업창을 띄우게 했다. 보면 알겠지만 내가 직접 만든 팝업창이다. 사실 이번에도 저렇게 구현해도 되지만 무언가 폼이 안살아서 싫었다. 그래서 이번에는 안드로이드 알림창으로 띄어보겠다. 그러기 위해 이번 포스팅 주제는 Unit..

반응형