본문 바로가기

메모장/스네이크 게임

스네이크 게임 - 메인 메뉴와 일시 정지

메인 메뉴 화면을 새로 만들어서 게임 시작 버튼을 클릭하였을 때
게임 화면으로 넘어가는 시스템을 추가하였다.

메인 메뉴에 사용되는 버튼들 추가 방법은
유튜버 "골드메탈"님의 영상을 참고하였다.
https://www.youtube.com/watch?v=qXa7y1Que6s&t=810s

또한 게임 화면에 일시정지 버튼을 추가하여
게임을 하는 도중에 일시정지를 할 수 있도록 해주었다.

메인 화면 + StartButton Inspector

"시작하기" 버튼을 클릭하면 게임 실행 화면으로
"설정" 버튼을 클릭하면 아래 화면으로 이동한다.

설정 화면 + GameManager Inspector

설정 항목들은 아직 추가하지 않은 상태이고
"뒤로가기" 버튼을 누르면 위 화면으로 되돌아간다.

게임 기본 화면 or 다시시작 클릭 시
일시정지 클릭 시 + GameManager Inspector

"일시정지" 버튼을 클릭하면 음식 생성과 스네이크의 이동이 정지하고
"다시시작" 버튼을 클릭하면 다시 게임이 진행된다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    // for Setting
    public GameObject inSetting;
    public GameObject mainButton;

    // Snake Var
    public GameObject snake;

    // Score Var
    public Text scoreText;

    // Pause Var
    bool isPause = false;
    public Text pauseText;

    void Update()
    {
        // Run in GameScene
        if (SceneManager.GetActiveScene().name == "GameScene")
        {
            // Load Score from Snake Script
            Snake snakeLogic = snake.GetComponent<Snake>();
            scoreText.text = string.Format("{0:n0}", snakeLogic.score); // {0:n0}: 세자리마다 쉼표로 나눠주는 숫자 양식
        }
    }

    // Start Button
    public void GameStart()
    {
        // Change Scene
        SceneManager.LoadScene(1);
    }

    // Setting Button
    public void GameSetting()
    {
        // On or Off the Object
        inSetting.SetActive(true);
        mainButton.SetActive(false);
    }

    // Back Button in Setting
    public void SettingBack()
    {
        // On or Off the Object
        inSetting.SetActive(false);
        mainButton.SetActive(true);
    }

    // Pause Game
    public void TimePause()
    {
        if (isPause)
        {
            // Resume
            Time.timeScale = 1;
            pauseText.text = "일시정지";
            isPause = false;
        }
        else
        {
            // Pause
            Time.timeScale = 0;
            pauseText.text = "다시시작";
            isPause = true;
        }
    }
}

 

궁금하신 점은 밑에 댓글 바랍니다