아직도? 유니티 개발 망치는 치명적 실수 10가지, 당신도 모르게 하고 있다!
게시일:
작성자: 자청의 유튜브 추출기
유니티 초보 실수 2탄! 프로젝트를 느리게 만드는 습관들
이번 영상에서는 프로젝트를 느리게 만들거나 관리하기 어렵게 만드는 습관들에 대해 알아볼 거야. 작은 습관 변화로 나중에 시간을 엄청 아낄 수 있으니 잘 따라와 봐!
1. 코드에 직접 값 넣기 (하드코딩)
- 문제점: 속도, 점프력 같은 게임 설정을 바꿀 때마다 코드를 수정해야 해서 귀찮아.
- 해결책: 값을 인스펙터(Inspector) 창에 노출시켜서 코드를 건드리지 않고 바로바로 바꿀 수 있게 하자.
2. Update 함수 안에서 GameObject.Find 쓰기
- 문제점:
Update는 매 프레임마다 실행되는데, 매번 게임 오브젝트를 찾는 건 성능을 엄청 잡아먹어. - 해결책: 게임 시작할 때 한 번만 찾아두거나, 인스펙터에서 연결해두자. 코드가 깔끔해지고 빨라질 거야.
3. 인스펙터에서 참조(Reference) 연결 안 하기
- 문제점: 코드는 멀쩡해 보여도, 인스펙터에서 연결해야 할 걸 안 하면 게임 실행하자마자 오류가 날 수 있어.
- 해결책: 게임 실행 전에 필요한 오브젝트들이 제대로 연결되었는지 꼭 확인하자.
4. 장면(Scene) 오브젝트 복사해서 쓰기
- 문제점: 작은 프로토타입에서는 괜찮지만, 나중에 수정할 게 많아지면 엉망진창이 돼.
- 해결책: 프리팹(Prefab)을 사용하자! 오브젝트를 한 번 만들어두고 여기저기 재사용할 수 있어. 프리팹만 수정하면 모든 복사본이 똑같이 바뀌어.
5. Update와 FixedUpdate 섞어 쓰기
- 문제점: 둘은 목적이 다른데 섞어 쓰면 미묘한 버그가 생길 수 있어.
- 해결책:
Update: 입력 처리, 타이머 등FixedUpdate: 물리 기반 움직임 (캐릭터 이동 등)- 이렇게 구분하면 게임이 더 부드럽고 일관성 있게 작동할 거야.
6. 오브젝트 계속 만들고 삭제하기
- 문제점: 총알, 적, 이펙트 같은 걸 계속 만들고 지우면 가비지 컬렉션(Garbage Collection) 때문에 게임이 버벅거릴 수 있어.
- 해결책: 오브젝트 풀링(Object Pooling)을 사용하자. 새 오브젝트를 만드는 대신 기존 오브젝트를 재사용하는 거야.
7. UI 크기 조절 문제 (UI Scaling)
- 문제점:
Canvas Scaler를Constant Pixel Size로 두면 어떤 화면에서는 괜찮다가 다른 화면에서는 깨져 보일 수 있어. - 해결책:
Scale With Screen Size로 바꾸면 다양한 해상도에 맞춰 UI가 잘 조절될 거야.
8. 실시간 조명(Real-time Lights) 너무 많이 쓰기
- 문제점: 실시간 조명을 많이 쓰면 화면을 그리는 데 부담이 커져.
- 해결책: 꼭 필요한 곳(플레이어나 특수 효과)에만 실시간 조명을 쓰고, 나머지는 라이트 베이킹(Bake Lighting)으로 처리하자.
9. 플레이 모드에서 값 변경 후 저장 안 하기
- 문제점: 플레이 중에 값을 바꿔놓고 게임을 끄면 모든 변경 사항이 사라져서 허탈할 때가 많아.
- 해결책: 게임 끄기 전에 컴포넌트 값 복사해서 나중에 다시 붙여넣거나, 수동으로 저장해두자.
10. 프로파일러(Profiler) 무시하기
- 문제점: 게임이 느려졌을 때 추측만 하면 시간 낭비야.
- 해결책: 프로파일러를 사용하면 어디가 문제인지 정확히 알 수 있어. 스크립트, 물리, 렌더링, 가비지 컬렉션 등 어디서 병목 현상이 발생하는지 증거를 보여주니 효율적으로 고칠 수 있지.
이 팁들이 너의 유니티 실력을 한 단계 업그레이드하는 데 도움이 되길 바라!