우리는 최근에 우주 슈팅 게임을 위한 게임 오버 스크린을 만들었습니다. 그러나 플레이어가 다시 시도할 수 있도록 게임을 다시 시작하는 방법이 필요합니다. 이 작업은 Unity의 씬 관리를 사용하여 수행할 수 있습니다.
- 먼저 플레이어가 'R' 키를 눌러 게임을 다시 시작할 수 있는 텍스트 UI 요소를 만듭니다. 게임 화면의 하단 중앙 부분에 고정합니다.
2. 재시작 텍스트에 대한 핸들을 만들고 Unity 인스펙터 뷰에서 부착하여 볼 수 있도록 합니다.
3. UIManager 스크립트에서 게임 오버 시퀀스와 관련된 모든 것을 처리하는 새 메서드를 만듭니다. 이것은 텍스트에 대한 게임, 해당 텍스트에 대한 깜박임 효과 및 다시 시작 텍스트입니다.
void GameOverSequence()
{
_gameOverText.gameObject.SetActive(true);
StartCoroutine(GameOverFlicker());
_restartText.gameObject.SetActive(true);
}
4. 다음 단계는 계층 구조 보기에서 게임 관리자 개체와 해당 스크립트를 만드는 것입니다. 스크립트가 개체에 연결되어 있는지 확인합니다. 게임 관리자는 게임이 실제로 끝났는지 확인합니다. 게임이 끝나면 사용자는 'r' 키를 누르고 새 장면을 로드할 수 있습니다. 이 경우 기본 장면 또는 게임 장면이 됩니다.
[SerializeField]
private bool _isGameOver;
private void Update()
{
if (Input.GetKeyDown(KeyCode.R) && _isGameOver == true)
{
SceneManager.LoadScene(0);
}
}
public void GameOver()
{
Debug.Log("GameManager::GameOver() Called");
_isGameOver = true;
}
그러나 이 작업을 수행하려면 장면 관리를 활용해야 합니다. 이렇게 하려면 이러한 설정을 작동하기 위해 게임 관리자 스크립트에서 SceneManagement 라이브러리를 사용해야 합니다.
- 게임에서 씬을 로드하기 위한 단계가 하나 더 있습니다. 인식하려면 빌드 설정에 추가해야 합니다. 이것은 Unity로 이동하여 File -> Build Settings...
2. 이대로 실행하면 게임이 다시 시작되지 않습니다. 게임 오버 시퀀스가 호출되지 않습니다. UIManager 스크립트에서 게임 관리자에 대한 참조 핸들을 만들고 Start 메서드에 할당합니다. 스크립트 통신을 사용하여 게임 관리자 스크립트에 액세스합니다.
void Start()
{
_scoreText.text = "Score: " + 0;
_gameOverText.gameObject.SetActive(false);
_gameManager = GameObject.Find("Game_Manager").GetComponent<GameManager>();
if (_gameManager == null)
{
Debug.LogError("Game Manager is NULL");
}
}
.
.
.
.
.
void GameOverSequence()
{
_gameManager.GameOver();
_gameOverText.gameObject.SetActive(true);
StartCoroutine(GameOverFlicker());
_restartText.gameObject.SetActive(true);
}
약간의 보너스를 받으려면 원하는 경우 클릭 가능한 버튼이 있는 메인 메뉴를 입력하고 버튼을 클릭하거나 게임 종료 상태에 도달하고 'R' 키를 눌러 게임을 시작할 수 있습니다.
'프로그래밍 > 게임 개발' 카테고리의 다른 글
프로그래밍 「 게임 개발 편」스케이트보드 컨트롤러 — 제스처 인식 (0) | 2023.07.04 |
---|---|
프로그래밍 「 게임 개발 편」Unity의 베이킹 방법 (0) | 2023.07.04 |
프로그래밍 「 게임 개발 편」2D 플랫포머: 게임에서 스프라이트를 뒤집는 방법 (0) | 2023.07.04 |
프로그래밍 「 게임 개발 편」RPG를 만들어서 Godot 4를 배워봅시다 — Part 14: 적의 사격과 피해 입히기 (0) | 2023.07.04 |
프로그래밍 「 게임 개발 편」Unity에서 레벨 디자인 마무리 (0) | 2023.07.04 |