VioletaBabel

70. Unity 팁 2 본문

BCA/4. Unity
70. Unity 팁 2
Beabletoet 2018. 11. 21. 11:53

2018.11.7


 - 모바일에서 이미지, 사운드의 용량과 퀄리티간의 밸런스

안드와 아이폰 텍스쳐 압축 방식이 다르고, 아이폰은 6 이전과 이후에 따라 압축 방식 등이 나뉨.

안드로이드는 유니티 버전 별로 다름. 유니티 2018의 경우엔 텍스쳐 누르면 플랫폼 별로 나오는데, 

Max Size = 적당히 실제보단 같거나 크게 해라

Resize Algorithm = 가만 둬라. 가능한 기본이 좋고 아니면 육안으로 보며 판단.

Compression = High Quality

압축된 건 색감이 달라진다. 근데 압축 푸는 건 비추. 모바일 상에서 압축 안되면 메모리가 상당히 무리. 색감이 달라져서 맘에 안들면 차라리 이미지를 바꿔라.

압축은 필수!!

pvrtc는 아이폰 용 압축 알고리즘인데, 굉장히 이미지가 많이 깨짐.

그래서 ASTC를 추천한다.

사운드는 mp3나 ogg. 어떨 때는 mp3가, 어떨 때는 ogg가 용량이 적어지기도 했다. 이유는 모름. 용량이 작은 건 장점. 로딩할 때 조금 걸림. 그러므로 배경 음악 등은 mp3, ogg.

유니티에서 오디오 파일 속성 조정 가능. 근데 딱히 안해도 된다. 그래도 하면 용량이 반 정도까진 줄여본 경험이 있으시다.



 - 클래스와 구조체의 차이. 언제 어떻게 사용하는지.

회사나 개발자에 따라 다를 수 있음을 우선 명시.

1. 상속을 해야 할 경우엔 무조건 클래스를 쓸 수 밖에 없다.

2. 클래스는 힙, 구조체는 스택 영역에 메모리가 잡힘. 구조체는 가비지 컬렉터가 안 도는 방식. 근데 구조체도 작을 때나 스택에 잡히지 변수가 많아서 커지거나 구조체 안에 클래스를 넣거나 하면 힙에 잡힘. 그래서 가능한 구조체를 안 쓰길 추천. 처음엔 구조체로 되어 있는 게 추가하고 하다보면 클래스가 나은 경우가 생김. 정말 변수 수가 적고 더 이상 확장을 할 필요가 없을 때 구조체.

3. 매우 심플한 것만 구조체.



 - 유니티 API, 에셋 중 유용하게 사용한 것

텍스쳐들이 하나의 아틀라스로 합쳐지면 더 좋은 퍼포먼스가 나올 때가 있다. 그걸 해주는 에셋이 있음.

퍼포먼스 체크하는 애들 (fps, 메모리 등)

그래픽 쪽에 쓸 게 많을 것.

사실 예전과 달리 요즘은 유니티가 되게 잘 되어있어서 에셋이 많이 필요하진 않다.



 - 에셋 수정 경험담

코드 부분은 직접 뜯어서 고치심

3D 부분은 맥스로 수정 => 3D 할 수 없으면 힘듦

2D도 디자이너 필요



 - 변수 값 초기화

에딧-프로젝트세팅-스크립트익스큐션오더

에서 누가 먼저 호출되는지를 정해줄 수 있다

낮은 수가 먼저 호출됨. 근데 이 기능에만 의존하면 스크립트 수가 정말 많아졌을 때 힘들어지니 추천은 안 함. 

스타트와 어웨이크는 초기화에 관련된 것들이 많이 들어간다. 근데 여기서는 독립적인 것들 (다른 스크립트와 연계하지 않아 에러가 날 염려가 적은 것들)

강사님의 경우 매니저를 하나 만들어서 A, B, C라는 스크립트의 초기화 함수를 순서를 정해 불러준다.



 - 오브젝트를 public으로 끌어 쓰는 것과 getcomponent, find 등으로 찾아 쓰는 것을 어떻게 나누는가

find, getcomponent는 느리고 가비지가 많이 생김. 너무 반복적으로 수행하는 것은 비추천.

계속 바뀌는 건 코드. 고정인 건 퍼블릭으로 인스펙터 연결.



 - 풀링

언제 호출 되었고 언제 다시 들어갔다. 라는 데이터를 저장해 3분 이상 된 애들은 죽여라! 하는 식으로 할 수도 있다.

오디오도 풀링에 사용. 오디오 풀링을 더 알아보자.



 - 게임 씬 구조

구조 1. 유통사,개발사 로고 - 타이틀 씬(로그인, 추가 다운로드, 서버 선택) - 로비 - 플레이(끝나면 다시 로비) [세븐나이츠, 몬스터 길들이기, 도탑전기 등등]

구조 2. 유통사,개발사 로고 - 타이틀 씬(로그인, 추가 다운로드, 서버 선택) - 로비와 플레이가 한 씬 안에 믹스. [환생킹 등등] => 환생킹의 경우에는 로비, 플레이가 각자의 씬이지만 타이틀 씬에서 다음 씬으로 넘어갈 때 두 씬을 같이 불러 하나로 합친다.



 - 씬을 나누는 것의 장단점

씬을 나누는 건 개발 공정과 퍼포먼스에 많은 영향을 준다. 리소스적 측면이 굉장히 크고, 기능적인 측면도 있다.

모바일의 경우 구 기기는 메모리가 작기 때문에 씬을 나누는 것이 중요



Foreach는 딕셔너리의 경우에만 사용. 그 외의 경우엔 좀 구리다.

'BCA > 4. Unity' 카테고리의 다른 글

72. Model View Controller 2 - PostMessage, DelayMessage  (0) 2018.11.21
71. Unity 팁 3  (0) 2018.11.21
69. Unity 팁 1  (0) 2018.11.21
67. Model View Controller 1 - SendMessage  (0) 2018.11.20
66. A*를 응용한 이동  (0) 2018.08.14
Comments