-
12장. 유니런 배경 스크롤링과 게임 매니저Unity/레트로의 유니티 게임 프로그래밍 에센스 2020. 11. 17. 18:08
<2D 스프라이트가 그려지는 순서 조정하기>
<반복되는 배경을 만드는 방법>
<static의 개념>
<여러 해상도에서 일관된 UI를 유지하는 방법>
<싱글턴 패턴>
12.1 배경 추가하기
12.1.1 정렬 레이어
- 스프라이트 렌더러 컴포넌트가 그리는 그래픽의 앞뒤 정렬은 트랜스폼 컴포넌트의 위치값과 상관없음
=> z축이 필요한데 2D에서는 z축 값이 무의미하게 취급되기 때문..
- 2D 게임 오브젝트가 그려지는 순서는 스프라이트 렌더러의 정렬 레이어가 결정.
- 레이어 목록에서 가장 아래쪽 정렬 레이어가 가장 앞쪽에 그려짐.
=> 배경은 가장 위쪽 캐릭터는 가장 아래쪽.
12.2 움직이는 배경과 발판
12.2.1 ScrollingObject
12.2.2 반복되는 배경 만들기
- Box Collider 2D 컴포넌트는 2D 스프라이트 게임 오브젝트에 추가되면 자동으로 그 크기에 맞춰짐.
- Awake() : Start() 메서드처럼 초기 1회 자동 실행되는 유니티 이벤트 메서드지만, Start() 메서드보다 실행시점이 한 프레임 더 빠름
- Vector3를 Vector2에 할당하는 건 불가능. Vector2를 Vector3에 할당하는 것은 가능.
transform.position = (Vector2) transform.position + vector2;
12.3 게임 UI 만들기
12.3.1 고정 픽셀 크기
12.3.2 화면 크기에 따라 스케일
- 작은 크기의 픽셀을 강제로 늘리는 방식이 아님
- 실제화면과 기준 해상도 사이의 화면 비율이 다른 경우 캔버스 스케일러 컴포넌트의 일치 필드 값이 높은 방향의 길이를 유지하고 다른 방향의 길이를 조절
- 일치 값을 결정하는 데는 정해진 기준이 없음.
12.3.3 캔버스 스케일러 설정
12.3.4 점수 UI 텍스트 만들기
12.3.5 게임오버 텍스트 만들기
12.4 게임 매니저 만들기
12.4.1 싱글턴 패턴의 필요성
- 디자인 패턴 : 어떤 문제를 해결하는 데 좋다고 알려진 구조.
- 어떤 오브젝트가 프로그램에 단 하나만 존재해야하며, 어느 곳에서도 쉽게 접근 가능해야 할 때 싱글턴 패턴 사용
12.4.2 정적
12.4.3 GameManager 스크립트 준비
12.4.4 GameManager 싱글턴 구현
12.4.5 GameManager의 필드
12.4.6 GameManager의 Update() 메서드
- SceneManager.LoadScene() : 씬 이름을 입력 받아 해당 신을 다시 로드
- SceneManager.GetAcitveScene().name : 현재 씬의 이름
12.4.7 GameManager의 AddScore() 메서드
12.4.8 GameManager의 OnPlayerDead() 메서드
12.4.9 GameManager 스크립트의 전체 코드
12.4.10 PlayerController 스크립트 수정
12.4.11 ScrollingObject 스크립트 수정
12.4.12 GameManager 컴포넌트 설정하기
12.5 마치며
- 2D 게임 오브젝트를 그리는 순서는 정렬 레이어로 조정
- 캔버스 스케일러 컴포넌트의 스케일 모드는 다양한 화면 크기에 대해 캔버스의 크기가 어떻게 변경될지 결정
- '고정 픽셀 크기' 모드에서는 화면 크기(해상도)가 달라져도 UI 요소의 크기(픽셀의 개수)는 달라지지 않음
- '고정 픽셀 크기' 모드에서는 화면의 크기(해상도)가 커졌을 때, UI가 상대적으로 작게 보이는 문제가 있음
- '화면 크기에 따른 스케일' 모드에서는 기준 해상도를 정하고, 게임 화면 크기에 맞춰 캔버스를 확대/축소하는 방식으로 동작
- '화면 크기에 따른 스케일' 모드에서는 다양한 크기와 비율의 화면에서도 기준 해상도에서의 UI 모습을 최대한 유지할 수 있음
- static으로 선언된 정적 변수는 하나의 변수를 여러 오브젝트가 공유하는 방식으로 동작
- 정적 변수는 클래스 이름과 점 연산자를 이용해서 접근
- 싱글턴 패턴은 '단 하나만 존재해야 하며, 손쉽게 접근 가능한' 오브젝트를 구현하는 디자인 패턴
'Unity > 레트로의 유니티 게임 프로그래밍 에센스' 카테고리의 다른 글
14장. 좀비 서바이버 : 레벨 아트와 플레이어 준비 (0) 2021.02.12 13장. 유니런 : 발판 반복 생성과 게임 완성 (0) 2020.11.18 11장. 유니런 플레이어 제작 (0) 2020.11.15 10장. 공간과 움직임 (0) 2020.11.11 09장. 방향, 크기, 회전 (0) 2020.11.10