유니티/최적화 (8) 썸네일형 리스트형 유니티 Tag 비교 ==, CompareTag() 어떤 걸 사용할까? 이번 포스팅은 정말 간단하다. 뭐 다양한 상황에서 Tag 비교를 자주 사용들 한다. 무언가랑 부딪혔을때 뭐 gameObject.tag=="player" 이런식으로 말이다 하지만 이러한 호출 하나하나가 가비지를 생성한다고 한다. tag를 참조하려고 할 때 문자열을 새롭게 힙에 할당하기 때문이다. 그러므로 태그를 비교해야 할 때는 gameObject.tag=="Player" 이렇게 말고 gameObject.CompareTag("Player") 이렇게 구현하자. 이렇게 함으로써 가비지 생성을 방지 할 수 있다. 출처: https://blog.unity.com/kr/games/optimize-your-mobile-game-performance-tips-on-profiling-memory-and-code-arch.. 유니티 최적화(6)- 변화하는 텍스트 최적화 이번 포스팅은 매우 간단하다. 필자의 게임에는 저렇게 점수가 화면에 표시된다. 장애물을 피하면서 시간이 지날수록 점수가 계속 올라가는 구조이다. 위와같이 Scene에서 Wire Frame으로 보면 Text또한 Vertex로 이뤄져있다는것을 알 수 있다. 점수가 계속 변경되면서 Vertex가 변경이 되면 Text가 포함되어있는 Canvas의 Vertex Buffer가 계속 ReBuild된다. Canvas에 많은 UI들이 포함되어 있으면 당연히 비용이 클 수밖에 없다. 초간단 해결법은 변화하는 Text UI를 다른 캔버스에 넣으면된다. 즉 Canvas를 2개를 두는 것이다. 유니티 최적화(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안쪽으로 나오게 해.. 유니티 모바일 최적화(4) - mesh 최적화 mesh최적화에 대해 포스팅하기전 우선 Draw Call과 Batches에 관해 간단하게 작성하겠다 Draw Call CPU가 GPU에게 어떠한 물체를 그리라고 요청하는 것 모바일의 경우 100개정도가 상한선 일반적으로 오브젝트를 그릴 때, 오브젝트 단위로 한 개씩 증가. 또한 Draw Call이 적을수록 가벼운 게임 이라 할 수 있다. 기기의 성능에 따라 특정 개수를 넘어가면 프레임 저하 나타남 Batches 드로우 콜을 포함하는 상위 개념 Batches = Draw Call + 기타 등등 Batches=메쉬의 개수 + 라이트의 개수 + 재질의 개수 -동적 배칭으로 절약된 개수이다. 내가 최적화를 찾아보게 된 가장 큰 이유가 있다. 모바일에서 내가 만든 게임을 해보려는데 너무 렉이 걸려서 도저히 못 하.. 유니티 모바일 최적화(3) - 용량 큰 파일 찾기 모바일 앱스토어에서는 보통 크기 제한을 두기 때문에 빌드된 앱의 파일 크기를 최대한 줄여주는 것이 매우 중요하다. 어떤 게임인지에 따라 어떤 파일이 가장 저장공간을 잡아먹는지는 다 다르다. 그렇기에 방법은 때에 따라 다르지만 빌드된 앱에서 어떤것이 가장 크기를 잡아먹는지 확일할 수 있는법을 포스팅하겠다. 우선은 통상적으로 빌드를 한 번 실행시켜야 한다. 실행시킨 후에는, 콘솔창 맨 오른쪽의 드롭다운을 클릭한 후 Open Editor Log를 클릭한다. 많은 내용의 메모장이 나올텐데 일일이 찾을 필요없이 ctrl + F 해서 Texture를 검색하면 위와 같이 나온다. 어떤 파일이 용량을 많이 잡아먹는지 확인 후 상황에 맞게 조치해 주면 된다!! 출처 : https://docs.unity3d.com/kr/.. 유니티 모바일 최적화(2)-그림자 없애기 생각날때마다 하나씩 적는 모바일 최적화를 위한 방법들 그 2번째이다. https://docs.unity3d.com/kr/2021.1/Manual/ShadowPerformance.html 그림자 문제 해결 - Unity 매뉴얼 실시간 그림자는 렌더링 오버헤드가 상당히 높습니다. 그림자를 드리울 수 있는 모든 게임 오브젝트는 먼저 섀도우 맵으로 렌더링됩니다. 그런 다음 해당 맵을 사용하여 그림자를 받을 수 있는 docs.unity3d.com Unity공식 매뉴얼에서도 알 수 있듯이 실시간 그림자는 렌더링 오버헤드가 상당히 크다. 만약 그림자가 중요한 게임이라면 그림자 생성에 어떻게 하면 자원낭비를 줄일 수 있을까 고민해야 한다. 하지만 나는 그림자가 중요한 게임을 만드는게 아니어서 그냥 다 꺼버리겠다. 이렇.. 유니티 모바일 최적화(1)-텍스처 압축 유니티로 모바일 게임을 제작할 때 매우 중요한게 있다. 바로 최적화이다. 휴대폰은 PC보다 사양이 낮기에 반드시 최적화를 해주어야 한다. 그렇기에 생각날때마다 하나씩 모바일 최적화를 위한 방법들을 블로그에 적어내려고 한다. 위와 같이 ASTC 압축 포맷을 이용하면 Texture의 용량을 품질에 큰 손실없이 줄일 수 있다. 왼쪽과 오른쪽은 품질에 크게 차이가 보이지 않지만 용량 면에서는 왼쪽이 오른쪽보다 8배 많은 용량을 차지한다. 품질이 중요한 모델에 사용되는 Texture라면 4x4 block을 사용하자.그렇지 않다면 8x8 또는 12x12를 사용하자 글 출처 : https://blog.unity.com/kr/technology/optimize-your-mobile-game-performance-exp.. 이전 1 다음