6.1강 - 프로젝트 최적화
Tutorial
·
Beginner
·
+10XP
·
30 mins
·
(81)
Unity Technologies

개요: 
이 수업에서는 프로젝트를 최적화하고 성능을 더 높이는 다양한 기법을 배웁니다. 이러한 소규모 프로토타입 프로젝트에서는 큰 차이점을 확인하지 못할 수도 있지만, 큰 프로젝트를 익스포트하는 경우에는 성능 향상이 매우 중요하며 특히 모바일이나 웹 환경에서는 더욱 그렇습니다.
프로젝트 결과:
여러 프로토타입 프로젝트의 최적화를 개선하며, 이는 개인 프로젝트에서 구현할 샘플이 됩니다.
Materials
Languages available:
1. 변수 속성
이 교육 과정에서는 public 또는 private 변수만 사용했지만, 그 외에도 다양한 변수 속성을 숙지해야 합니다.
- Prototype 1 프로젝트를 열고 PlayerController.cs 스크립트를 엽니다.
- private 속성을 사용하는 줄 맨 앞에 [SerializeField]를 추가한 다음 인스펙터에서 값을 수정합니다.
- FollowPlayer.cs에서 [SerializeField] 속성을 Vector3 offset 변수에 추가합니다.
- readonly, const 또는 static 속성을 적용하여 인스펙터에서 변수가 제거되는지 확인합니다.

2. Unity 이벤트 함수
이 교육 과정에서는 기본 Update() 및 Start() 이벤트 함수만 사용했지만, 다양한 상황에서 사용할 수 있는 다른 함수들도 많습니다.
- Main Camera를 복제하고 이름을 Secondary Camera로 변경한 후 Main Camera를 비활성화합니다.
- Secondary Camera의 위치를 1인칭 시점으로 다시 지정한 후 해당 위치에 맞게 offset 변수를 편집합니다.
- 프로젝트를 실행하고 얼마나 끊기는지 확인합니다.
- PlayerController.cs에서 Update를 FixedUpdate로 변경하고, FollowPlayer.cs에서 Update를 LateUpdate로 변경한 후 다시 테스트합니다.
- 두 스크립트에서 Start() 함수를 삭제한 후 Main Camera를 다시 활성화합니다.

3. 오브젝트 풀링
이 교육 과정에서는 게임플레이 중에 오브젝트를 인스턴스화하고 파괴하는 프로토타입을 주로 제작했지만, 실제로는 성능이 더 뛰어나고 효율적인 오브젝트 풀링 방법이 있습니다.
- Prototype 2를 열고 백업을 생성합니다.- 프로젝트에서 DetectCollisions, PlayerController 및 DestroyOutOfBounds 스크립트를 삭제합니다.
 
- Object Pooling Unity 패키지를 다운로드하고 씬으로 임포트합니다.
- PlayerController 스크립트를 플레이어에 다시 연결합니다. DestroyOutOfBounds 스크립트를 동물 및 먹이 프리팹에 다시 연결한 후 DetectCollisions 스크립트를 동물 프리팹에 다시 연결합니다(먹이 프리팹은 제외).
- ObjectPooler 스크립트를 Spawn Manager에 연결하고, 먹이 발사체를 Objects To Pool 변수로 드래그하고, Amount To Pool을 20으로 설정합니다.
- 프로젝트를 실행한 다음 발사체가 활성화되거나 비활성화되는 모습을 확인합니다.
4. 수업 요약
새로운 개념 및 기술
- 최적화
- 직렬화된 필드
- readonly / const / static / protected
- 이벤트 함수
- FixedUpdate(), Update(), LateUpdate() 비교
- Awake()와 Start() 비교
- 오브젝트 풀링