Ch 9. 결과 UI, 점수 계산

Date:     Updated:

카테고리:

태그:

케이디님의 [유니티 강좌] 리듬 게임 유튜브 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

🚀 결과 UI

image

image

📜TimingManager

int[] judgementRecord = new int[5];

    public int[] GetJudgementRecord()
    {
        return judgementRecord;
    }

    public void MissRecord()
    {
        judgementRecord[4]++;  // Miss의 판정 기록
    }

    public bool CheckTiming()
    {

                    if (CheckCanNextPlate())
                    {
                        theScoreManager.IncreaseScore(j);  // 점수 증가
                        theStage.ShowNextPlate(); // 다음 플레이트 호출
                        theEffect.JudgementEffect(j); // 판정 연출
                        judgementRecord[j]++;  // 판정 기록
                    }
                    else
                    {
                        theEffect.JudgementEffect(5);
                    }
                        
                    return true;
                }
            }
        }
        
        // Miss
        theCombo.ResetCombo();
        theEffect.JudgementEffect(timingBoxs.Length);
        MissRecord();
        return false;
  • judgementRecord
    • 인덱스별로, 즉 Perfect, Cool, Good, Bad, Miss 별로 횟수를 전부 기록해야 한다. 그래야 결과 UI 에 띄울 수 있다!


📜ScoreManager

    public int GetCurrentScore()
    {
        return currentSrore;
    }


📜ComboManager

    int currentCombo = 0;
    int maxCombo = 0;

    public void IncreaseCombo(int p_num = 1)
    {
       //...
        if (maxCombo < currentCombo)
            maxCombo = currentCombo;
        //...
    }

    public int GetMaxCombo()
    {
        return maxCombo;
    }

최대 콤보를 기록해야 한다.


📜Result

Result에 붙인다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Result : MonoBehaviour
{
    [SerializeField] GameObject goUI = null;
    [SerializeField] Text[] txtCount = null;
    [SerializeField] Text txtCoin = null;
    [SerializeField] Text txtScore = null;
    [SerializeField] Text txtMaxCombo = null;

    ScoreManager theScore;
    ComboManager theCombo;
    TimingManager theTiming;

    void Start()
    {
        theScore = FindObjectOfType<ScoreManager>();
        theCombo = FindObjectOfType<ComboManager>();
        theTiming = FindObjectOfType<TimingManager>();
    }

    public void ShowResult()
    {
        // 결과 UI 활상화
        goUI.SetActive(true);

        // 초기화
        for (int i = 0; i < txtCount.Length; i++)
            txtCount[i].text = "0";
        txtCoin.text = "0";
        txtScore.text = "0";
        txtMaxCombo.text = "0";

        // 점수들 가져오기
        int[] t_judgement = theTiming.GetJudgementRecord();
        int t_currentScore = theScore.GetCurrentScore();
        int t_maxCombo = theCombo.GetMaxCombo();
        int t_coin = (t_currentScore / 50);

        // 텍스트 세팅 (가져온 것들로)
        for (int i = 0; i < txtCount.Length; i++)
        {
            txtCount[i].text = string.Format("{0:#,##0}", t_judgement[i]);
        }
        txtScore.text = string.Format("{0:#,##0}", t_currentScore);
        txtMaxCombo.text = string.Format("{0:#,##0}", t_maxCombo);
        txtCoin.text = string.Format("{0:#,##0}", t_coin);
    }
}

image


📜GoalPlate

Result theResult;
theResult = FindObjectOfType<Result>();

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            theAudio.Play();
            PlayerController.s_canPressKey = false;
            theNote.RemoveNote();
            theResult.ShowResult();
        }
    }

목표 지점에 도달했을 때 결과 UI 띄우기 theResult.ShowResult();


📜NoteManager

    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.CompareTag("Note"))
        {
            if (collision.GetComponent<Note>().GetNoteFlag())
            {
                theTimingManager.MissRecord();
                theEffect.JudgementEffect(4);
                theCombo.ResetCombo();
            }

노트를 완전히 놓쳐버렸을 때 Miss 횟수를 카운팅 할 수 있도록 theTimingManager.MissRecord();



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 4 카테고리 내 다른 글 보러가기

댓글 남기기