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

닷지 게임제작 기초 16(시간누적, 재시작 기능 구현 편).

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

이번 포스팅은 게임매니저에서 시간누적과 게임재시작 기능을 구현한다.

생각보다 간단하다.

void Start()

{

surviveTime = 0;

isGameover = false;

}

 

이렇게 초기화를 해준다.

 

게임시작후 몇 초가 지난지는 surviveTime에 델타타임의 값을

누적하여 더해 표현한다. 이 값을 timeText에 할당한 텍스트 컴포넌트 필드에 이용 할것이다.

<시간 누적 구현하기>

void Update()

{

if(!isGameover)

{

surviveTime += Time.deltaTime;

timeText.text = "Time: " + (int)surviveTime;

}

}

 

이런 방식으로 한다

게임오버가 아닐때(==true 일때) 조건문 돌아간다.

 

변수 timeText에는 타임텍스트 게임 옵젴의 텍스트 컴포넌트를 할당할 것이기 때문에

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

 

간단히 정리하면

1. 드래그드롭으로 할당받을 수 있게 퍼블릭과 그 컴포넌트타입으로 변수선언

2. 시간을 누적시킨 변수를 여기에 +(int)변수 형태로 적기.

 

퍼블릭으로 선언된 변수는 외부에서 접근가능하고

컴포넌트의 필드값은 대부분 퍼블릭이기에 코드상에서

해당컴포넌트의 필드로 .을 사용하여 접근가능하다.

 

(int)surviveTime 는 실수형을 정수형으로 형변환을 한것임.

 

만일 죽었다면, if(!isGameover) 값이 false라면

r 키를 눌러 재시작 하기로 하였다.

else문에서 이를 구현하면

 

<게임 재시작 구현하기> 

else

{

if(Input.GetKeyDown(KeyCode.R))

{

SceneManager.LoadScene("Dodge");

}

}

 

이렇게 한다.

게임 재시작은 현재 씬을 다시 로드한다는 의미이다.

(= 하나의 게임월드)

현재 활성화된 씬을 해제하고 새로운 씬을 로드하는 방식이다.

 

새로운 씬이 로드되면 기존 씬에 있던 모든 겜옵젴이 파괴되고

이를 응용하여 현재 활성화된 기존 씬의 모든것을 지우고 같은 씬을 다시 로드한다.

현재 씬의 이름을 적는다 아마 대부분 SampleScene 으로 기본설정 되어 있을 것이다.

난 미리 씬의 이름을 Dodge라 해놓았기에 이걸 써준다.

 

SceneManager using UnityEngine.SceneManagement; 라이브러리 에서 가져온

유니티에 내장된 씬 관리자 이고 SceneManager LoadScene()메서드는 인자(argument)

씬의 이름을 받아 해당 씬을 로드한다.

 

SceneManager.LoadScene(string SceneName);

의 방식으로 사용한다.

 

이걸 사용하려면 먼저 빌드 설정의 빌드 목록에 등재되어 있어야한다

유니티 프로젝트를 생성할 때 샘플씬 으로 되어있으면 빌드목록에 자동으로 등록되어 있지만

나는 닷지라는 이름으로 해주었으니 빌드목록에 추가를 해줘야 한다.

 

File > Build Settings 에서 추가해준다.

add open scene 버튼을 한번 클릭해주면 된다.

isGameover변수를 게임 오버로 바꿔주는

Endgame 함수는 다음 포스팅에서 이어서 구현한다.

댓글