커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
endPanel이 안불러와지는 상황입니다.
undefined주차
북마크
정*선
댓글
16
추천
0
조회수
14
조회수
14
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


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");
    }
    
}


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴