ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4일차 점수 올라가게 하기 ~ 1주차 완료
    개발일지/스파르타 코딩클럽 유니티 강의 2024. 3. 22. 15:23

    4일차로 1주차 강의를 완료했다.

     

    어려운 부분은 없었지만 새로 알게 된 부분도 있었고

    복습이 제대로 되어서 공부에 만족하는 편이다.

     

    오늘 배운 내용

    • 점수 보드 만들기 (Canvas)
    • 싱글톤 화 ( 게임매니저의 독재화(?))
    • 점수 올라가는 함수 만들기
    • 캐릭터에 맞으면 점수 올라가게 하기
    • 올라가는 점수 표기하기
    • Retry 판넬 만들기
    • 시간 흐르게 하기
    • 0초에 판넬이 나오게 하기
    • 판넬 클릭하면 다시 시작하게 하기
    • 초기화 함수 만들기

    새로 알게 된 내용

    게임매니저의 싱글톤 화

    public static gameManager I;
    
    void Awake()
    {
        I = this;
    }

    사실 꽤 많은 오류를 없애줄 거라고 생각이 드는 굉장히 중요한 부분이라고 생각하는데

    이제서야 처음 알았다.

     

    오늘 발생한 문제

     

    중요하게 생각하는 부분

    이전내용들도 당연하지만 오늘 배운 내용들도 다 잊으면 안되는 것들 뿐이었다.

     

    게임매니저 싱글톤 화 ( 위에 코드 있음 )

     

    점수 올라가는 함수

    int totalScore = 0;
    
    public void addScore(int score)
    {
        totalScore += score;
    }

    쉬운 부분이지만 헷갈리기도 좋다고 생각

     

    점수가 올라갈 때마다 Text 변경

    public void addScore(int score)
    {
        totalScore += score;
        scoreText.text = totalScore.ToString();
    }

     

    ***시간 흐르게 하기***

    void Update()
    {
        limit -= Time.deltaTime;
        timeText.text = limit.ToString("N2");
    }

    가장 중요하게 생각하는 Time.deltaTime 함수이다 ( Time.deltaTime 시간이 얼마나 흘렀는지 알려주는 기능)

    예전부터 알아도 응용하기 어려웠던 함수

    ToString("N2") 는 소수점 둘째자리 수 까지 text에 표시해준다 (ex.60.00)

     

    ***0초에 멈추고 판넬 나오게 하기***

    void Update()
    {
        limit -= Time.deltaTime;
    
        if (limit < 0)
        {
            limit = 0.0f;
            panel.SetActive(true);
            Time.timeScale = 0.0f;
        }
    
        timeText.text = limit.ToString("N2");
    }

    말 그대로 limit가 0 보다 작아졌을 때

    모든 것을 멈추고 판넬이 등장하게 한다.

    판넬은 유니티에서 초기 상태를 false로 해놨기 때문에

    0초에 등장하게 한다.

     

    ***게임매니저에서 씬 불러오기***

    using UnityEngine.SceneManagement;
    
    public void retry()
    {
        SceneManager.LoadScene("MainScene");
    }

    말 그대로 LoadScene을 통해서 MainScene을 새로고침 한다.

     

    판넬을 클릭하면 retry 함수 작동시키기

    public void retry()
    {
        gameManager.I.retry();
    }

    먼저 panel.cs 스크립트를 만들고, 위 함수를 넣어서 게임매니저를 부르고

    판넬에 button 컴포넌트를 추가하여 On click 기능에 panel.cs를 추가한다.

     

    *****게임 전체 초기화 시키기*****

    가장 중요한 부분

    void Start()
    {
        InvokeRepeating("makeRain", 0, 0.5f);
        initGame();
    }
    void initGame()
    {
        Time.timeScale = 1.0f;
        totalScore = 0;
    	  limit = 30.0f;
    }

    initGame 함수에 Score를 0으로 limit를 초기상태로 돌린 후

    Start에 넣으면

    판넬을 클릭해서 retry 함수가 작동해서 LoadScene이 됐을 때

    Start 안의 함수들이 다시 작동함으로 다시 게임이 처음부터 시작된다.

     

     

    숙제까지 완료 !

    복습이 잘 되어서 뿌듯하다

     

     

     

     

     

     

     

Designed by Tistory.