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오브젝트에 손쉽게 접근했다는사실에주목하기