본문 바로가기
관/핫한 닷지 프로젝트 게임개발

닷지 게임제작 기초 15(게임 텍스트 UI와 게임매니저 편).

by 4차원 박스 2020. 7. 29.

이번 포스팅은 텍스트 컴포넌트 세부사항을 조절하고 UI를 완성하고 이를 제어할 게임매니저를 조금 다룬다.

 

텍스트의 폰트 사이즈는 취향에 맞게 조정하고

위치도 RectTransform 컴포넌트에서 직접 조정해 보는걸 추천한다.

<수평 수직 오버플로우를 오버플로우로 변경>

Horizontal Overflow, Vertical Overflow

글이 글상자를 넘칠경우 해당 방향으로의 글자를 잘라낼 것이지 혹은

그대로 넘치게 표시할 것인지 결정한다.

 

수평 오버플로의 디폴트값인 Wrap은 글자가 수평으로 넘칠때 강제로 줄바꿈 한다

Overflow로 설정하면 줄바꿈하지 않게된다

 

수직 오버플로의 디폴트값인 Truncate(자르기) 는 글자가 수직방향으로 글상자를 넘칠때

넘친 글자를 잘래낸다

Overflow로 설정하면 그대로 표시한다.

 

<그림자 효과>

Shadow 컴포넌트를 추가한다.

 

자신이 추가된 UI겜 오브젴에 그림자 효과를 추가하여

글자가 이전보다 더욱 잘 보이게 된다.

 

같은 방식으로 게임오버, 최고기록 텍스트도 만든다.

컨트롤+d 버튼으로 복사하여 위치와 내용만 다르게 해준다

내용은 “r로 재시작으로 해주자.

다만 최고기록 텍스트는 게임 오버가 될때 게임오버 텍스트와 함께 출력되어야 한다.

자식 오브젴은 부모 겜옵젴과 함께 활성화/비활성화 된다.

따라서 Gameover Text 옵젴이 활성화/비활성화 될때

Record Text 겜 오브젝트도 함께 활성화/비활성화 될 수 있도록 자식오브젝트로 만들어줘야한다 드래그드롭해주자.

 

Time Text 오브젴은 항상 출력이 되어야 하지만

Gameover Text는 비활성화 돼있어야 한다.

겜오버텍스트 오브젴의 왼쪽 체크박스를 해제 해주자.

필요한 UI를 모두 만들었으니 이제 스크립트를 만들어 제어해준다

이 스크립트가 게임 매니저 이다.

 

<게임 매니저>

UI와 게임규칙, 게임오버 상태 등등을 표현하는 스크립트이다.

필요한 기능은

1. 게임오버 상태표현

2. 생존시간 갱신

3. UI를 갱신하고 표시

4. 게임오버시 게임 재시작

 

스크립트를 만들고 GameManager 이름으로 해준다.

GameManager 는 UI의 텍스트를 관리, 게임재시작 기능을 해주어야 함으로

UI, 씬 관리와 관련된 라이브러리 를 using으로 가져와준다 

using UnityEngine.UI; // UI 관련 라이브러리

using UnityEngine.SceneManagement; // 씬 관리 관련 라이브러리

을 해준다.

 

 

다음은 게임 매니저에 필요한 전역변수 선언이다.

전역변수는

public GameObject gameoverText; //겜 오버시 활성화할 텍스트 오브젝트

public Text timeText; //생존시간을 표시할 텍스트 컴포넌트

public Text recordText; //최고기록을 표시할 텍스트 컴포넌트

 

float surviveTime; //플레이어가 살아남은 시간

bool isGameover; //게임오버를 표현

 

이렇게 해준다.

 

gameoverText 는 게임 오브젝트의 활성화

timeText,recordText 는 텍스트 컴포넌트를 가리킨다.

 

코드 상에서 게임 오브젝트의 컴포넌트를 해당 컴포넌트 타입의 변수에 할당하는

방식으로 사용할 수 있다.

 

전자는 GameObject 타입

후자는 Text 타입이라는 차이점을 가진다.

이렇게 하는 이유는 전자는 텍스트 내용을 수정할 필요가 없고 활성/비활성만

따질 것 이기에 GameObject 타입으로 선언하였고

후자는 텍스트 수정이 필요하기에 Text 타입으로 할당하였다.

 

퍼블릭으로 이렇게만 해놓는건 드래그 드롭으로 나중에 할당하겠다는 의미이다.

Text타입의 text필드는 인스펙터창에서 적었던 텍스트 컴포넌트의 Text필드이다.

 

 

surviveTime: 게임시작후 현재까지 플레이어가 살아남은 시각.

isGameover: 겜오버 상태를 표현.

 

다음포스팅에 게임매니저를 이어서 해본다.

댓글