유니티

유니티 빗물 받는 르탄이 만들기 #6 게임오버 구현

작성자 정보

  • 마스터 작성
  • 작성일

컨텐츠 정보

본문

빗물 받는 르탄이 만들기 과정

 

목차

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();

    }

}

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


알림 0