유니티/닷지(3D 탄막 슈팅 게임)

닷지(5) - 게임 매니저와 UI

무직백수취업준비생 2021. 8. 5. 06:20
728x90
반응형

프로젝트탭에 Scripts, Materials, Prefabs 폴더를 만들어 정리해줍니다.

 

게임이 진행될때 전체 화면이 계속해서 회전되게 만들겠습니다.

 

Rotator 스크립트를 작성합니다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotator : MonoBehaviour
{
    public float rotationSpeed = 60f;

    void Update()
    {
        transform.Rotate(0f, rotationSpeed*Time.deltaTime, 0f);
    }
}

해당 스크립트를 Level에 드롭합니다.

 

원하는대로 회전하는걸 확인할 수 있습니다.

 

UI 개체를 만들어줍니다.

 

Record Text는 Gameover Text에 속하게 만들고 비활성화 시켜둡니다.

 

이제 GameManager 스크립트를 작성합니다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //UI 관련 라이브러리
using UnityEngine.SceneManagement; //씬 관련 라이브러리

public class GameManager : MonoBehaviour
{
    public GameObject gameoverText; //게임오버 시 활성화할 텍스트 게임 오브젝트
    public Text timeText; //생존 시간을 표시할 텍스트 컴포넌트
    public Text recordText; //최고 기록을 표시할 텍스트 컴포넌트

    private float surviveTime; //생존 시간
    private bool isGameover; //게임오버 상태
    void Start()
    {
        //생존 시간과 게임오버 상태 초기화
        surviveTime = 0;
        isGameover = false;
    }

    void Update()
    {
        if(!isGameover)
        {
            //생존 시간 갱신
            surviveTime += Time.deltaTime;
            //갱신한 생존 시간을 timeText 텍스트 컴포넌트를 이용해 표시
            timeText.text = "Time : " + (int)surviveTime;
        }
        else
        {
            //게임오버 상태에서 R을 누른 경우
            if(Input.GetKeyDown(KeyCode.R))
            {
                //SampleScene 씬을 로드
                SceneManager.LoadScene("SampleScene");
            }
        }
        
    }

    //현재 게임을 게임오버 상태로 변경하는 메서드
    public void EndGame()
    {
        //현재 상태를 게임오버 상태로 전환
        isGameover = true;
        //게임오버 텍스트 게임 오브젝트를 활성화
        gameoverText.SetActive(true);

        //BestTime 키로 저장된 이전까지의 최고 기록 가져오기
        float bestTime = PlayerPrefs.GetFloat("BestTime");

        //이전까지의 최고 기록보다 현재 생존 시간이 더 크다면
        if(surviveTime > bestTime)
        {
            //최고 기록 값을 현재 생존 시간 값으로 변경
            bestTime = surviveTime;
            //변경된 최고 기록을 BestTime 키로 저장
            PlayerPrefs.SetFloat("BestTime", bestTime);
        }

        //최고 기록을 recordText 텍스트 컴포넌트를 이용해 표시
        recordText.text = "Best Time : " + (int)bestTime;
    }
}

그리고 PlayerController 스크립트를 켜서 Die()메서드를 수정합니다.

 

    public void Die()
    {
        //자신의 게임 오브젝트를 비활성화
        gameObject.SetActive(false);

        //씬에 존재하는 GameManager 타입의 오브젝트를 찾아서 가져오기
        GameManager gameManager = FindObjectOfType<GameManager>();
        //가져온 GameManager 오브젝트의 EndGame() 메서드 실행
        gameManager.EndGame();
    }

 

 

Game Manager 오브젝트를 만들고 컴포넌트를 설정해줍니다.

 

정상적으로 플레이되는것을 확인합니다.

 

 

 

빌드된 게임을 플레이해봅니다.

 

이것으로 탄막 슈팅 게임 Dodge가 끝났습니다.

728x90
반응형