티스토리 뷰
드디어 마지막 챕터. 아침의 내가 걱정이 되지만, 그동안 내가 너무 안했다는걸 느끼며 최대한 마무리해본다. 양이 많은 것 같지만 빨리 끝내고 얼른 새 책을 진행하거나 게임에 필요한 다른 것들을 배워보고 싶다.
Gamelog 13. 점수를 얻었다
점수를 표시하는 장치를 만든다. 점수를 표시하는 것은 2가지 방법이 있다.
- 0~9까지의 숫자 이미지를 준비해서 표시할 값에 따라 전환하는 방법
: 실제 그래픽으로 숫자를 구현할 수 있지만, 전환하는 구조를 스스로 만들어야 하여 난이도가 높음 - UI 텍스트 사용
: Unity의 Canvas라는 화면을 겹쳐 표시할 수 있는 기능 활용
Gamelog 13_1. 캔버스를 알아보자
Canvas
카메라를 이동하고 게임 화면을 스크롤시켜도 표시 위치가 바뀌지 않는다.
점수, 라이프 게이지, 남은 시간 등을 나타나는데 사용하기 좋다.
GameObject>UI>Legacy>Text에서 Text
를 생성한다.
Text-TextMeshPro의 경우에는 아직 잘 모르겠지만 무언가 import가 필요한 것 같으므로 천천히 알아보기로 한다.
Text
를 생성하면, Hierarchy에 Canvas
가 생긴 것을 볼 수 있다.Canvas
아래에는 Text
가 있으며 추가적으로 Text
를 생성하면 Canvas는 추가적으로 생성되지 않고 아래에 들어가게 된다.
Canvas와 2D의 게임화면은 크기가 현저히 다르다. UI 텍스트에는 '표시 영역에서 문자가 조금이라도 벗어나면 그 문자를 표시하지 않는다'라는 성질이 있어 표시영역은 미리 크게 해둬야 한다.
표시영역의 좌측하단에 게임 오브젝트들이 놓여있지만, text는 Canvas 표시영역의 위치에 따라 표기된다.
Gamelog 13_2. 카운터를 만든다
카운터는 카운터 본체, 카운터 값 표시, 이벤트 발생시 카운트, 카운트 00이 될 경우 씬전환
카운터 본체
public class GmaeCounter:MonoBehaviour {
public static int value;
...
}
// 외부에서 접근시
GameCounter.value = 1;
외부에서 바로 해당 값에 액세스하기 위해서는 public static
변수를 사용해야 한다. 이를 활용하여 '카운터 본체' 스크립트를 만들어 카운터를 초기화할 수 있게 한다.
카운터 값 표시
using UnitiEngine.UI;
public class Forever_ShowCount:MOnoBehavior {
void Update() {
GetComponent<Text>().text = GameCounter.value.ToString();
}
}
스크립트에서 UI 텍스트를 다룰 때는 using UnityEngine.UI;
가 필요하다.
또한, 값을 계속 표시하기 위해서 Update()
를 사용한다.
내부 text를 변경하기 위해서는 GetComponent<Text>().text =
을 사용하며, GameCounter.vlaue.ToString();
을 통해 외부 오브젝트로부터 값을 가져온다.
이벤트 발생시 카운트
충돌하면 카운트하고 자기 자신을 지우도록 구현해본다.
void OnCollisionEnter2D(Collision2D collision) {
// (생략)목표오브젝트면
GameCounter.value = GameCounter.value + addValue;
this.gameObject.SetActive(false);
}
스크립트를 Text에 적용하고, 아이템 오브젝트에 '이벤트 발생시 카운트 후 삭제' 되도록 프리팹을 통해 여러개 맵에 생성한다.
이렇게 체리를 먹으면 counter가 증가하는 게임이 구현되었다.
카운트 00이 될 경우 씬전환
void FixedUpdate() {
if(GameCounter.value == lastCount) {
SceneManager.LoadScene(sceneName);
}
}
씬전환은 SceneManager.LoadScene(sceneName)
을 사용하여 전환한다.
게임 시작, 리플레이, 게임 오버, 게임 클리어 등의 전환시 사용한다.
Gamelog 13_3. 미니게임 완성
체리를 먹을 경우 카운트가 증가하고, 카운트가 3이 되면 게임이 클리어한다.
그리고 게임을 하는 도중 유령에게 부딪히면 게임이 종료하도록 구성됐다.
한달동안 열심히 했던 책! 드디어 끝!
'프로그래밍 > Unity' 카테고리의 다른 글
Gamelog 15. 무언가 어렵다 (0) | 2023.03.02 |
---|---|
Gamelog 14. 강의를 따라한다 (0) | 2023.02.20 |
Gamelog 12. 맵이 커졌다 (0) | 2023.02.15 |
Gamelog 11. 중력으로 던진다 (0) | 2023.02.14 |
Gamelog 10. 중력을 이용해본다 (0) | 2023.02.06 |