티스토리 뷰

반응형

Gamelog 13. 점수를 얻었다

드디어 마지막 챕터. 아침의 내가 걱정이 되지만, 그동안 내가 너무 안했다는걸 느끼며 최대한 마무리해본다. 양이 많은 것 같지만 빨리 끝내고 얼른 새 책을 진행하거나 게임에 필요한 다른 것들을 배워보고 싶다.

 

Gamelog 13. 점수를 얻었다

점수를 표시하는 장치를 만든다. 점수를 표시하는 것은 2가지 방법이 있다.

  1. 0~9까지의 숫자 이미지를 준비해서 표시할 값에 따라 전환하는 방법
    : 실제 그래픽으로 숫자를 구현할 수 있지만, 전환하는 구조를 스스로 만들어야 하여 난이도가 높음
  2. UI 텍스트 사용
    : Unity의 Canvas라는 화면을 겹쳐 표시할 수 있는 기능 활용

 

Gamelog 13_1. 캔버스를 알아보자

Canvas

카메라를 이동하고 게임 화면을 스크롤시켜도 표시 위치가 바뀌지 않는다.
점수, 라이프 게이지, 남은 시간 등을 나타나는데 사용하기 좋다.

Unity Text

GameObject>UI>Legacy>Text에서 Text를 생성한다.
Text-TextMeshPro의 경우에는 아직 잘 모르겠지만 무언가 import가 필요한 것 같으므로 천천히 알아보기로 한다.

Unity Canvas

Text를 생성하면, Hierarchy에 Canvas가 생긴 것을 볼 수 있다.
Canvas 아래에는 Text가 있으며 추가적으로 Text를 생성하면 Canvas는 추가적으로 생성되지 않고 아래에 들어가게 된다.

Unity Canvas

Canvas와 2D의 게임화면은 크기가 현저히 다르다. UI 텍스트에는 '표시 영역에서 문자가 조금이라도 벗어나면 그 문자를 표시하지 않는다'라는 성질이 있어 표시영역은 미리 크게 해둬야 한다.

Unity Canvas

표시영역의 좌측하단에 게임 오브젝트들이 놓여있지만, 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);
}

unity game counter

스크립트를 Text에 적용하고, 아이템 오브젝트에 '이벤트 발생시 카운트 후 삭제' 되도록 프리팹을 통해 여러개 맵에 생성한다.

Unity game counter

이렇게 체리를 먹으면 counter가 증가하는 게임이 구현되었다.

카운트 00이 될 경우 씬전환

void FixedUpdate() {
    if(GameCounter.value == lastCount) {
        SceneManager.LoadScene(sceneName);
    }
}

씬전환은 SceneManager.LoadScene(sceneName)을 사용하여 전환한다.
게임 시작, 리플레이, 게임 오버, 게임 클리어 등의 전환시 사용한다.

 

Gamelog 13_3. 미니게임 완성

Unity Mini Game

체리를 먹을 경우 카운트가 증가하고, 카운트가 3이 되면 게임이 클리어한다.
그리고 게임을 하는 도중 유령에게 부딪히면 게임이 종료하도록 구성됐다.

 

한달동안 열심히 했던 책! 드디어 끝!

 

 

유니티를 몰라도 만들 수 있는 유니티 2D 게임 제작 - YES24

「언제, 무엇을 할 것인가? 」만 알면 유니티를 몰라도 2D 게임을 만들 수 있다!게임용 프로그래밍 언어를 잘 알지 못해도, 완벽하게 코드를 이해하지 못해도 「언제, 무엇을 할 것인가? 」만 알

www.yes24.com

 

반응형

'프로그래밍 > 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
댓글