
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
30초가 다 흘렀는데도 불구하고 endPanel이 불러와지지 않아 게임이 끝나지 않는 상황입니다 ㅠㅠ
Build Setting 확인해서 Main 씬 있는지도 확인했습니다.


체를 캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.
작성한 코드 및 에러 메세지
// GameManager
using System.Collections;
using System.Collections.Generic;
using UnityEditorInternal;
using UnityEngine;
using UnityEngine.UI; // UI에 관련된 걸 쓸거야!
public class GameManager : MonoBehaviour
{
public GameObject rain; // Prefabs 가져오기
public GameObject endPanel;
int totalScore;
public Text totalScoreText;
public Text timeText;
// 싱글톤: 나 하나밖에 없다. 그리고 여러 스크립트에서 접근이 가능하다.
public static GameManager Instance; // Instance 변수 선언
float totalTime = 30.0f;
private void Awake() // 싱글톤의 로직
{
Instance = this;
Time.timeScale = 1.0f;
}
void Start()
{
// Make Rain 함수 호출
InvokeRepeating("MakeRain", 0f, 1f);
// = MakeRain이라고 하는 함수를 0초부터 (바로) 1초마다 반복적으로 호출한다.
}
void Update()
{
// 0보다 클 때 실행
if (totalTime > 0f)
{
totalTime -= Time.deltaTime;
// 시간을 계산해주는 연산이 프레임이 높으면 많이 계산되기 때문에 프레임 대비로 맞춰준 것
// 모든 기기들이 같은 시간값을 가질 수 있도록
}
// 0초가 되었을 때 게임이 종료되게 하는 로직
else
{
totalTime = 0f; // 음수가 될 수도 있으므로.
endPanel.SetActive(true); // 꺼진 endPanel의 게임 오브젝트를 켜준다.
Time.timeScale = 0f; // Time의 크기를 0으로 만들어줌 -> 게임의 시간이 멈춤
}
// if와 else 둘 다 끝난 뒤 공통적으로 실행되어야 하는 로직이므로.
timeText.text = totalTime.ToString("N1"); // 소수점 첫째자리 까지만 출력
}
void MakeRain () // 빗방울 만드는 함수, 로직
{
Instantiate(rain); // 게임 오브젝트를 생성하는 함수 = Instantiate ();
// 소괄호 내부에는 생성하고 싶은 게임 오브젝트 넣기
}
// 매개변수 : 이 함수를 다른 곳에서 호출했을 때 데이터를 넘겨주는 공간
// -> 르탄이와 빗물이 충돌했을 때 점수를 넘겨주는데, 넘겨줄 수 있게끔 데이터를 저장할 수 있는 공간을 만들어 주는 것.
public void AddScore (int score)
{
totalScore += score; // 총 점수에 score가 합산될 수 있게 하는 로직
Debug.Log(totalScore); // 제대로 로직이 수행되는지 확인하기 위한 로그
// 르탄이와 빗물이 맞았을 때 호출이 되어야 함. -> Rain이라는 스크립트에서 진행됨
// totalScore를 UI Text에서도 적용될 수 있게 만드는 로직
// 그래서 GameManager에서 text Component를 사용해서 그곳에 Scroe을 넣어 합산된 점수를 UI로 표현할 수 있게!
totalScore += score;
totalScoreText.text = totalScore.ToString(); //,ToString은 자료형을 String으로 바꾼다는 뜻
}
}
// RetryButton
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class RetryButton : MonoBehaviour
{
public void Retry()
{
// MainScene 라는 Scene을 로드해와라
SceneManager.LoadScene("MainScene");
}
}
