유니티 (45) 썸네일형 리스트형 유니티 모바일 최적화(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.. 유니티 모바일에서 네트워크 연결 확인 과정은 많이 생략했지만 이미 생각한 곳까지는 다 구현해서 스토어에도 내놓았다. 처음 작품이니만큼 정말 많이 부족하지만 일단 완성했다는 것에 의미를 둔다. 그런데 출시해놓고 보니깐 wifi,data연결을 체크를 안 했던 것이 생각났다. 로그인도 해야되고 스테이지를 깨거나 죽었을때 계속 DB에 접근해야하는데 네트워크 상태를 확인 안 해주다니 말이안된다. 계속 wifi,data가 연결되어 있는지 확인하게 코드를 짜보겠다. void Update() { if(Application.internetReachability==NetworkReachability.NotReachable)//인터넷 연결이 안되어있다면 { } } 구글링 하니 위에 처럼 하면 네트워크를 체크 할 수 있다고 했다. 하지만 좀 더 알아보니 저 방식.. 유니티 2D 로딩씬 제작 시작하기에 앞서서 https://wergia.tistory.com/194 [Unity3D] Programming - 로딩 씬(Loading Scene) 구현하기(커튼 방식) Programming - 로딩 씬(Loading Scene) 구현하기(커튼 방식) 작성 기준 버전 :: 2019.1.4f1 [이 포스트의 내용을 유튜브 영상으로도 시청하실 수 있습니다] 게임의 장르와 배경들의 종류는 많고도 많지만 그 wergia.tistory.com 이 블로그를 참고해서 글을 작성한다 가장핵심이 되는 코드는 아래와 같다 private IEnumerator Load(string sceneName) { AsyncOperation op=SceneManager.LoadSceneAsync(sceneName); //비동기 방식.. 유니티 2D싱글톤 패턴 원래는 개발일지를 매일매일 써서 만들어지는 과정을 상세하게 보여주고 싶었는데 귀찮아서 그러진 못했다. 어쨋든 최근에 배운 싱글톤 패턴에 대해 작성해보겠다. 계속해서 개발을 하다보니 public 변수로 선언해서 inspector창에서 드래그앤 드랍으로 계속 참조해줘야되기도 귀찮고 이 오브젝트는 계속해서 참조할거 같은데 어떻게 하면 효율적으로 전역변수처럼 쓸수 있을까?? 하고 고민하다가 찾아낸게 싱글톤 패턴이다. 우선 씬의 GameManager라는 오브젝트와 스크립트를 만든다 그리고 그 GameManager라는 스크립트에 자주 참조되는 오브젝트들을 선언한다 그러면 어느 스크립트에서든 GameManager를 통해서 오브젝트들을 참조할 수 있다. 게임의 시작화면이다. 플레이어도 바뀌고 배경도 바뀌고 많이 바뀌었.. 현재점수 최고점수 쿠키런같은 게임에서 매우 필수적인 현재점수 최고점수를 구현해보겠다. 참고로 기본적인 점프, 수그리기 같은 버튼들은 구현이 되어 있다. 우측 상단의 현재 점수 최고점수는 단순히 캔버스에 Text만 추가해주면 된다. 그 후 각각 최고점수 Text에는 SaveScore.cs 를 넣어주고 현재점수 Text에는 LoadText.cs를 넣어준다. 좌측 상단은 임시적으로 만든 저장 버튼이다. 우선적으로 시간이 지나면서 점수가 오르는 시스템이 필요하다. 단순히 score라는 int형에 코루틴을 이용해서 반복문으로 계속 score가 올라가게 구현해주었다. SaveScore.cs의 일부 public int score=0; private void Start() { StartCoroutine("plus"); } IEnumer.. 이전 1 2 3 4 5 6 다음