13장. 유니런 : 발판 반복 생성과 게임 완성
<발판 구현>
<OnEnable() 메서드>
<발판 생성기 구현>
<오브젝트 풀링>
<미리 생성된 발판을 재사용하는 방법>
13.1 발판 만들기
13.1.1 Platform 스크립트
13.1.2 Platform의 OnEnable() 메서드
- OnEnable() 메서드는 Awake()나 Start() 같은 유니티 이벤트 메서드
- Start() 메서드처럼 컴포넌트가 활성화될 때 자동으로 한 번 실행됨. 처음 한 번만 실행되는 Start() 와 달리 스크립트 컴포넌트가 활성화 될 때마다 실행됨
=> 스크립트 컴포넌트를 끄고 켜는 방식으로 재실행할 수 있음. 또는 게임 오브젝트를 활성화/비활성화로도 가능
- Random.Range(0, 3) : 0, 1, 2 중에서 한 숫자를 랜덤으로 변환.
13.1.3 Platform의 OnCollisionEnter2D() 메서드
13.1.4 Platform 스크립트의 전체 코드
13.1.5 Platform 컴포넌트 설정하기
13.2 발판 생성기 만들기
13.2.1 오브젝트 풀링
- Instantiate() 나 Destroy() 처럼 오브젝트를 실시간으로 생성/파괴하는 처리는 성능을 많이 요구함 -> 게임 프레임 드랍
- 오브젝트 풀링은 필요한 오브젝트를 게임 초반에 미리 생성. -> 로딩 시간이 길어질 수 있음
13.2.2 발판 무한 배치 과정
13.2.3 PlatformSpawner 작성하기
13.2.4 PlatformSpawner의 필드
13.2.5 PlatformSpawner의 Start() 메서드
- Instantiate() 메서드는 프리펩의 복제본을 생성. 프리펩 명과, 생성할 위치, 생성 시 회전 값을 받음.
- Quaternion.identity : 오일러각의 (0, 0, 0) 회전에 대응
13.2.6 PlatformSpawner의 Update() 메서드
- Time.time : 게임 시작 후 시간이 몇 초 지났는지 출력하는 변수
13.2.7 PlatformSpawner 스크립트의 전체 코드
13.2.8 PlatformSpawner 컴포넌트 설정하기
13.3 빌드하기
13.3.1 배경음악 추가하기
13.3.2 유니런 빌드하기
13.4 마치며
- OnEnable() 메서드는 컴포넌트가 활성화될 때마다 매번 실행
- 오브젝트 풀링은 필요한 오브젝트를 미리 생성하여 사용하는 방식
- 오브젝트 풀링에서는 오브젝트를 실시간으로 생성하지 않고 풀에 있는 오브젝트를 가져다 씀
- 오브젝트 풀링에서는 오브젝트를 실시간으로 파괴하지 않고, 파괴할 오브젝트를 풀로 봔환
- 오브젝트 풀링을 사용하면 초기 로딩은 길어지지만 실시간 생성/파괴에 의한 성능 저하를 막을 수 있음
- 오디오 소스 컴포넌트의 Loop를 체크하면 오디오가 반복 재생됨