6.1강 - 프로젝트 최적화

Tutorial

·

Beginner

·

+10XP

·

30 mins

·

(81)

Unity Technologies

6.1강 - 프로젝트 최적화


개요:

이 수업에서는 프로젝트를 최적화하고 성능을 더 높이는 다양한 기법을 배웁니다. 이러한 소규모 프로토타입 프로젝트에서는 큰 차이점을 확인하지 못할 수도 있지만, 큰 프로젝트를 익스포트하는 경우에는 성능 향상이 매우 중요하며 특히 모바일이나 웹 환경에서는 더욱 그렇습니다.

프로젝트 결과:

여러 프로토타입 프로젝트의 최적화를 개선하며, 이는 개인 프로젝트에서 구현할 샘플이 됩니다.

Languages available:

1. 변수 속성

이 교육 과정에서는 public 또는 private 변수만 사용했지만, 그 외에도 다양한 변수 속성을 숙지해야 합니다.

  1. Prototype 1 프로젝트를 열고 PlayerController.cs 스크립트를 엽니다.
  2. private 속성을 사용하는 줄 맨 앞에 [SerializeField]를 추가한 다음 인스펙터에서 값을 수정합니다.
  3. FollowPlayer.cs에서 [SerializeField] 속성을 Vector3 offset 변수에 추가합니다.
  4. readonly, const 또는 static 속성을 적용하여 인스펙터에서 변수가 제거되는지 확인합니다.
1fdf7d95-0803-4c28-bde3-1fa71088d030_image.png

2. Unity 이벤트 함수

이 교육 과정에서는 기본 Update() 및 Start() 이벤트 함수만 사용했지만, 다양한 상황에서 사용할 수 있는 다른 함수들도 많습니다.

  1. Main Camera를 복제하고 이름을 Secondary Camera로 변경한 후 Main Camera를 비활성화합니다.
  2. Secondary Camera의 위치를 1인칭 시점으로 다시 지정한 후 해당 위치에 맞게 offset 변수를 편집합니다.
  3. 프로젝트를 실행하고 얼마나 끊기는지 확인합니다.
  4. PlayerController.cs에서 Update를 FixedUpdate로 변경하고, FollowPlayer.cs에서 Update를 LateUpdate로 변경한 후 다시 테스트합니다.
  5. 두 스크립트에서 Start() 함수를 삭제한 후 Main Camera를 다시 활성화합니다.
148bf603-7d52-41c5-8031-00d27ea26245_Screen_Shot_2019_07_02_at_4.09.41_PM.png

3. 오브젝트 풀링

이 교육 과정에서는 게임플레이 중에 오브젝트를 인스턴스화하고 파괴하는 프로토타입을 주로 제작했지만, 실제로는 성능이 더 뛰어나고 효율적인 오브젝트 풀링 방법이 있습니다.

  1. Prototype 2를 열고 백업을 생성합니다.
    1. 프로젝트에서 DetectCollisions, PlayerControllerDestroyOutOfBounds 스크립트를 삭제합니다.
  2. Object Pooling Unity 패키지를 다운로드하고 씬으로 임포트합니다.
  3. PlayerController 스크립트를 플레이어에 다시 연결합니다. DestroyOutOfBounds 스크립트를 동물 및 먹이 프리팹에 다시 연결한 후 DetectCollisions 스크립트를 동물 프리팹에 다시 연결합니다(먹이 프리팹은 제외).
  4. ObjectPooler 스크립트를 Spawn Manager에 연결하고, 먹이 발사체를 Objects To Pool 변수로 드래그하고, Amount To Pool을 20으로 설정합니다.
  5. 프로젝트를 실행한 다음 발사체가 활성화되거나 비활성화되는 모습을 확인합니다.

4. 수업 요약


새로운 개념 및 기술

  • 최적화
  • 직렬화된 필드
  • readonly / const / static / protected
  • 이벤트 함수
  • FixedUpdate(), Update(), LateUpdate() 비교
  • Awake()와 Start() 비교
  • 오브젝트 풀링

Complete this tutorial