유니티 빗물 받는 르탄이 만들기 #6 게임오버 구현
작성자 정보
- 마스터 작성
- 작성일
컨텐츠 정보
- 329 조회
- 목록
본문
빗물 받는 르탄이 만들기 과정
목차
1.유니티 씬 설정하기
2.캐릭터 움직이기
3.비 내리기 (오브젝트 관리)
4.충돌 구현
5.UI 구성
6.게임오버 구현
1.하이라키 패널에서 재도전 Panel 생성하기
1-1 하이라키 패널 오른쪽 클릭 > UI > Panel 생성하기
1-2 생성한 패널은 기존 UI 밖으로 꺼내기
1-3 Panel에 UI > Image 와 UI > Legacy > Text 2개의 오브젝트 추가하기
1-4 Image에는 Inspector 패널 Image 메뉴에서 Color의 값만 설정한다
ㄴ Color의 값은 232, 52, 78, 255로 설정한다.
1-5 Text의 Text는 재도전?으로 설정하고 글자 색은 흰색으로 바꾼다.
ㄴ 폰트와 폰트 크기는 원하는 것으로 설정한다.
1-6 panel.cs 스크립트 생성하여 추가하기
1-7 Inspector 패널 제일 상단에 있는 체크박스를 선택하여 체크박스를 끈다.
ㄴ 체크박스를 끄면 게임 화면에서 보이지 않는다.
1-8 Inspector 패널 하단 Add Component에서 Button을 붙인다.
1-9 Inspector 패널 Button에서 On Click() 이벤트를 활성화 하여 하이라키뷰 탭에 있는 panel을 Runtime 아래에 붙여 넣는다.
1-10 OnClick() > No Function 에서 Panel > retry 선택하기
ㄴ panel.cs가 있어야지 실행가능
2.gameManager.cs에 기능 추가하기
2-1 전체코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class gameManager : MonoBehaviour
{
public GameObject rain;
//게임 매니저 자체를 싱글톤으로 만들어서
//어디서든 접근이 가능하도록 셋팅함
public static gameManager i;
public Text scoreText;
public Text timetText;
int totalScore = 0;
public float limit = 60.0f;
public GameObject panel;
void Awake()
{
i = this;
}
void Start()
{
InvokeRepeating("makeRain", 0, 0.5f);
initGame();
}
void Update()
{
limit -= Time.deltaTime;
if(limit < 0)
{
Time.timeScale = 0.0f;
panel.SetActive(true);
limit = 0.0f;
}
//소수점 2째 자리까지 N2
timetText.text = limit.ToString("N2");
}
void makeRain()
{
//Debug.Log("비를 내려라!");
Instantiate(rain);
}
public void addScore(int score)
{
totalScore += score;
scoreText.text = totalScore.ToString();
}
public void retry()
{
SceneManager.LoadScene("MainScene");
}
void initGame()
{
Time.timeScale = 1.0f;
totalScore = 0;
limit = 60.0f;
}
}
2-2 유니티 씬에 접근하기위해 using UnityEngine.SceneManagement; 선언하기
2-3 생성한 Panel에 접근하기 위해 public GameObject panel; 선언하기
2-4 재시작 함수 생성하기
public void retry(){
SceneManager.LoadScene("MainScene");
}
2-5 업데이트에서 panel 활성하기
void Update(){
limit -= Time.deltaTime;
if(limit < 0)
{
Time.timeScale = 0.0f;
panel.SetActive(true);
limit = 0.0f;
}
timetText.text = limit.ToString("N2");
}
ㄴ SetActive(true); 를 통해 게임오버 시 panel을 활성화 하기
2-6 게임 초기화 함수 생성 및 게임시작시 함수 실행하기
void initGame(){
Time.timeScale = 1.0f;
totalScore = 0;
limit = 60.0f;
}
ㄴ 게임 초기화시 초 설정, 점수 설정, 시간 설정하기
2-7 유니티에서 gameManager panel 탭에 panel 연결하기
3.panel.cs에 기능 추가하기
3-1 전체코드 (gameManager.cs에서 생성한 retry함수 사용하기)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class panel : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void retry()
{
gameManager.i.retry();
}
}
관련자료
-
이전
-
다음