커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
GameManager 스크립트의 start함수 / 스크립트 상 update함수의 호출 시점
게임개발 종합반 v8
1주차
북마크
황*규
댓글
5
추천
0
조회수
23
조회수
23
답변 완료

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

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


질문이 두 가지가 있습니다.

  1. 아래 캡쳐화면처러 1-10강 16분32초를 보면 게임을 다시하기하여서

SceneManager.LoadScene("MainScene");

함수를 호출하여 MainScene을 다시 로드 하였습니다.

이렇게 되면 GameManager.cs 스크립트의 start()함수가 호출되는 것 같은데,

빗방울이 나오지 않는 이유는 무엇 때문인가요?(start()함수 내 InvokeRepeating("makeRain", 0, 0.5f); 함수가 있기 때문에 빗방울이 나와야 할 것 같은데..)


2 . C# 스크립트를 최초 생성하면 자동으로 start()함수와 update()함수가 생성됩니다.

start()함수는 C#과 연계된 gameObject가 최초 생성 될 때 호출되는 것으로는 이해하는데,

update()함수는 언제 호출이 되나요?

--> rtan.cs 스크립트 Update()함수에는 클릭하였을 경우, x포지션이 2.8보다 클 경우/작을 경우에 대한 로직이 있는데,

x포지션이 2.8보다 클 지 작을 지 매 순간마다 update함수가 실행되어서 체크를 하는 것인지?

--> GameManager.cs 스크립트의 update()함수에는 제한시간을 감소시키는 로직이 있는데, 이것도 매 순간순간 update()함수가 실행되는 것인지?

update()함수는 누군가가 호출하는 것이 아니라 반복적으로 계속 호출되는 것인지?



스파르타 즉문즉답




작성한 코드 및 에러 메세지

GameManager.cs 스크립트의 코드



using System.Collections;

using System.Collections.Generic;

using UnityEngine.SceneManagement;

using UnityEngine;

using UnityEngine.UI;


public class GameManager : MonoBehaviour

{

  public GameObject rain;

  public GameObject panel;

  public static GameManager I;

  public Text scoreText;

  public Text timeText;

  float limit = 60f;

  int totalScore;


  void Awake()

  {

    I = this;

  }

  // Start is called before the first frame update

  void Start()

  {

    initGame();

    InvokeRepeating("makeRain", 0, 0.5f);

  }


  // Update is called once per frame

  void Update()

  {

    limit -= Time.deltaTime;

    if (limit < 0)

    {

      Time.timeScale = 0.0f;

      panel.SetActive(true);

      limit = 0.0f;

    }

    timeText.text = limit.ToString("N2");

  }


  void makeRain()

  {

    Instantiate(rain);

  }


  public void addScore(int score)

  {

    totalScore += score;

    //Debug.Log("add score");

    scoreText.text = totalScore.ToString();

  }


  public void retry()

  {

    SceneManager.LoadScene("MainScene");

  }


  void initGame()

  {

    Time.timeScale = 1.0f;

    totalScore = 0;

    limit = 60f;

  }


}




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