-
내일배움캠프 54일차 TIL - 최종 프로젝트 기초 개발 3TIL/Unity 2024. 7. 3. 17:06
[한 줄 요약]
인벤토리 기능을 끝마치고, 고양이를 완전히 완성시키기 위한 작업에 들어갔다.
수준별 특강으로 최적화에 대해 학습하였다.
[학습 내용]
최종 프로젝트 기초 개발
인벤토리 완성
인벤토리 아이템 정보 패널
아이템 슬롯을 클릭하면 해당 슬롯의 데이터를 받아와 아래에 아이콘과 설명을 출력하는 패널을 제작했다.
아이템 제거
아이템 제거 시 선택한 슬롯의 갯수를 하나씩 감소시키고, 남은 갯수가 하나일 경우 슬롯을 비우는 기능을 제작했다. 현재는 버리기 기능이 직접적으로 없고, 아이템 사용 시 하나 제거하도록 구현하였다.
고양이 데이터
고양이 데이터 항목 추가
기존의 데이터에 새로운 항목을 더했다. 확장성을 고려하여 스프라이트와 번호, 설명 등을 추가하였다.
- Icon : 스프라이트 (Idle상태 1번 스프라이트)
- SerialNo : 고양이 고유 번호
- Description : 캐치 시에 출력할 간단한 설명
SO 파일 추가
이렇게 만들어진 데이터를 50개 가량으로 늘렸다. NPC로 사용될 고양이는 이름에 _NPC를 붙여주고, 랭크를 0으로 설정해주었다.
최적화 특강
초당 프레임(FPS)
초당 프레임
- FPS: 컴퓨터가 1초에 화면을 몇 번 그리는지
- ms: 다음 화면을 그리기까지의 시간 간격
초당 프레임 제한
FPS가 높을 필요가 있는지 먼저 생각해보는 게 좋다.프레임 단위로 게임 결과가 갈리는 게임이 아니라면, 프레임을 제한하는 것이 좋다.
특히 모바일 기기의 경우 발열이 심해질 수 있으로 제한을 두는 것이 권장된다.
배치(Batch)
배치
Draw Call과 Set Pass Call의 명령어들을 합친 것을 배치(Batch)라고 한다.
이미지 사용
큰 이미지 사용
크기가 큰 이미지를 사용한다면 사이즈를 줄여주는 게 좋다.
압축이 되는 형식의 이미지 사용
2의 거듭제곱(혹은 4의 배수, PoT)의 사이즈를 가진 정사각형 이미지를 사용하면 특정한 형식의 압축이 가능하다.
예를 들어 512 x 306 사이즈의 이미지를 쓰는 것보다, 512 x 512 사이즈의 이미지를 쓰는 것이 좋다.
스프라이트 아틀라스
여러 스프라이트들을 하나로 합쳐주는 게 좋다. 이 때 사용하는 것이 스프라이트 아틀라스(Sprite Atlas)다. 스프라이트 아틀라스를 생성하고 Objects for Packing에 이미지들을 넣으면 자동으로 PoT 형태로 그려준다.
단, 상황에 따라 소수의 스프라이트를 쓰기 위해 아틀라스 전체를 가져오는 게 더 손해일 수도 있으므로, 여러 요소들을 잘 고려하는 것도 중요하다.
스크립트 최적화
프로파일러 사용
가비지
new 키워드를 이용하여 생성한 객체를 한 번 쓰고 마는 형식의 코드는 자제하는 것이 좋다.
디버그 코드 제거
디버그 코드가 남아있으면 보안 상의 문제도 있지만, 성능도 꽤나 잡아먹는다. 개발이 완료되면 디버그 코드를 모두 지워주는 것이 좋으며, 혹은 빌드 때 제거되는 Debug.Assert()를 대신 사용하는 것도 좋다.
카메라
Camera.main은 Tag를 검색하는 형태이기 때문에 캐싱해서 사용해야 한다.
벡터 연산 순서
float * float * vector와 float * vector * float의 연산량은 다르다. 연산을 줄이는 쪽으로 연산 순서를 짜는 것이 좋다.
LINQ
닷넷 7 버전 이상부터는 LINQ가 더 빠를 수 있다. 그런데 유니티는 하위 버전의 닷넷을 쓰므로 사용을 지양하는 것이 좋다.
기타
- 오브젝트 풀
- Find, GetComponent 계열은 최소한으로 하고 캐싱하기
- 쓰지 않는 유니티 이벤트 함수 제거
- 불필요한 static 사용 지양
[회고]
오늘부로 수준별 특강이 종료되었다. 다른 분반의 특강도 시간 날 때 돌려봐야겠다.
인벤토리가 생각보다 버그 없이 잘 완성된 거 같다. 다시 고양이 작업에 들어가서 빠르게 다른 팀원들과 기능을 연결시켜야겠다. 적어도 이번주 금요일에는 캐치존과 던전과 마을이 연결되어있는 것을 목표로 잡아야겠다.
'TIL > Unity' 카테고리의 다른 글
내일배움캠프 56일차 TIL - 최종 프로젝트 기초 개발 5 (0) 2024.07.05 내일배움캠프 55일차 TIL - 최종 프로젝트 기초 개발 4 (0) 2024.07.04 내일배움캠프 53일차 TIL - 최종 프로젝트 기초 개발 2 (0) 2024.07.02 내일배움캠프 52일차 TIL - 최종 프로젝트 기초 개발 1 (0) 2024.07.01 내일배움캠프 51일차 TIL - 최종 프로젝트 기획 2 (0) 2024.06.28