[retr0 Unity]DodgeGame_03: 게임UI, Game Manager 제작, PlayerPrefs

k_dah·2021년 7월 17일
0

unity

목록 보기
8/15

"레트로의 유니티 게임 프로그래밍 에센스" 책을 참고하여 작성하였다.


씬 편집 모드를 2D로 바꿔 UI 편집이 쉽게 한뒤 게임 UI를 제작한다.

- UI 텍스트 만들기

: Hierarchy 창에서 Create>UI>Text 클릭, Text 게임 오브젝트를 만들면 총 세 개의 게임 오브젝트가 생성된다.

- Canvas 와 EventSystem

  • 모든 UI 게임 오브젝트는 Canvas 게임 오브젝트의 자식이 되어야 한다.
  • EventSystem 게임 오브젝트는 이벤트 시스템 컴포넌트를 가진 게임 오브젝트로, UI 게임 오브젝트에 클릭이나 터치, 드래그 같은 상호작용을 이벤트 메시지로 전달한다.
    스스로 동작하기 때문에 우리가 직접 수정할 일은 거의 없다.

- 텍스트 꾸미기

  • 표시할 글자 크기가 너무 크거나 표시할 글자 수가 너무 많으면 글이 글상자를 넘치게 된다.
    이때 Text 컴포넌트에서 Horizontal/Vertical Overflow로 이에 대한 조정이 가능하다.

  • 기본값인 Wrap 은 글자가 넘칠 경우 강제로 줄바꿈을 적용한다.
  • Overflow 는 글상자를 멋어난 글자들을 줄바꿈하지 않고 그대로 표시한다.
  • Truncate 는 넘친 글자들을 잘라낸다.

- Game Manager

: 게임의 규칙과 게임오버 상태를 표현하고, 생존 시간 등의 수치를 관리하고, 게임 UI를 갱신한다.

  • 텍스트 컴포넌트가 표시하는 텍스트 내용을 변경하고 싶다면 텍스트 컴포넌트를 Text 타입의 변수에 할당
  • 위의 코드에서 Gameover Text 게임 오브젝트는 텍스트 내용은 변경하지 않고 게임 오브젝트를 활성화/비활성화하는 방식으로만 사용할 것이므로 GameObject 타입으로 선언했다.

- 인스펙터 창에서 편집 가능하도록 표시되는 컴포넌트의 필드 값들은 대부분 public으로 선언된 변수들이다. 따라서 코드 상에서 해당 컴포넌트가 할당된 변수에서 점 연산자(.)로 접근할 수 있다.

예를 들어 Time Text 게임 오브젝트의 텍스트 컴포넌트의 폰트 사이즈를 접근해서 변경하고 싶다면 timeText.fontSize로 접근이 가능하다.

- SceneManager.LoadScene()

  • 로드할 씬은 빌드 설정의 빌드 목록(File>Build Settings...)에 등록되어 있어야 한다.
  • 이때 씬 이름 외에도 씬의 빌드 순번을 사용해서 씬을 로드할 수도 있다.

- PlayerPrefs (Player Preference 플레이어 설정)

  • 어떤 수치를 로컬(프로그램을 실행 중인 컴퓨터)에 저장하고 나중에 다시 불러오는 메서드를 제공하는 유니티에 내장된 클래스
  • 키-값 단위로 데이터를 로컬에 저장, 키를 통해 저장된 값을 불러올 수 있다.
  • float 값을 저장하고 불러올 때 (+int, string 도 가능)
    - PlayerPrefs.SetFloat(string key, float value);
    - PlayerPrefs.GetFloat(string key);
profile
개똥이

0개의 댓글

관련 채용 정보