using UnityEngine.SceneManagement;

 게임 재시작은 현재 활성화된 씬을 다시 로드하는 방식으로 구현할 수 있다

 

게임오버상태일때 게임을 재시작하는 기능을 만들자 

 

using TMPro;

// 점수를 출력할 UI 텍스트
public TextMeshProUGUI scoreText;

UI텍스트용 변수의 타입이 Text가 아닌 TextMeshProUGUI라는것에 주의하기.

Text타입은 UGUI의 빌트인 텍스트 컴포넌트 타입,

TextMeshProUGUI타입은 TextMeshProUGUI의 텍스트 컴포넌트 타입.

bool isGameover = false;

if (isGameover && Input.GetMouseButtonDown(0))
{
   SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

&&는 그리고 라는 뜻이고, 

그럼 if문 조건은 if (isGameover && Input.GetMouseButtonDown(0))이거인데,

 

if (isGameover && Input.GetMouseButtonDown(0))은

if (isGameover == true && Input.GetMouseButtonDown(0) == true) 와 같다

즉, if (isGameover == true && Input.GetMouseButtonDown(0) == true) 이거임.

먼저 if문으로 isGameover가 true인지 확인하여 게임오버상태인지를 확인한다. 동시에 Input~(0)을 검사하여 마우스 왼쪽버튼을 눌렀는지도 확인한다.

 

C#에서는 bool 변수는 그냥 써도 "== true인지 검사한다"는 의미가 된다.

 

 

 

SceneManager.GetActiveScene()은 현재 활성화된 씬의 정보를 Scene타입의 오브젝트로 가져오는 메서드이다.

Scene타입의 오브젝트는 씬의 이름을 변수name으로 제공함.

SceneManager.GetActiveScene().name은 현재씬의이름을 가져온것임

 


 public void AddScore(int newScore) 
 {
     if(isGameover==false)
     {
         score = score + newScore;
         scoreText.text = "Score : " + score;
     }
     
 }

score +=newScore;이 단축형으로 자주쓰임 

 

 public GameObject gameoverUI; // 게임 오버시 활성화 할 UI 게임 오브젝트
 
 // 플레이어 캐릭터가 사망시 게임 오버를 실행하는 메서드
public void OnPlayerDead() 
{
    isGameover = true;
    gameoverUI.SetActive(true);
}

메서드가 실행될때 isGameover가 true되며, gameoverUi에 할당된 Gameover Text게임 오브젝트가 활성화됨

PlayerCtrller스크립트에서 Die()메서드에

//게임매니저의 게임오버처리실행

GameManager.instance.onPlayerDead();

씬에 유일하게 존재하는 GameManager오브젝트로 접근하는데 싱글턴 변수 GameManager.instance를 사용했음에 주목하자

 

 

 private void Update() {
     
     //게임오버가 아니라면
     if (GameManager.instance.isGameover == false)
     {
         // 게임 오브젝트를 왼쪽으로 일정 속도로 평행 이동하는 처리
         //초당 speed의 속도로 왼쪽으로 평행이동
         transform.Translate(Vector3.left * speed * Time.deltaTime);
     }
 }

ScrollingObject스크립트에서 Update()메서드에

     if (!GameManager.instance.isGameove)이렇게 이번에도 GameManager.instance로 씬의 GamaManager오브젝트에 손쉽게 접근했다는사실에주목하기

 

+ Recent posts