UIManager.cs , DataManager.cs 코드 작성 및 실행결과

반응형

 

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

public class UIManager : MonoBehaviour
{
    public static UIManager instance;
    [SerializeField] private CanvasGroup gameCG;
    [SerializeField] private CanvasGroup levelCompleteCG;

    private void Awake()
    {
        if (instance == null)
            instance = this;
        else
            Destroy(gameObject);
    }
    // Start is called before the first frame update
    void Start()
    {
        GameManager.onGameStateChanged += GameStateChangedCallback;
    }

    private void OnDestroy()
    {
        GameManager.onGameStateChanged -= GameStateChangedCallback;
    }

    private void GameStateChangedCallback(GameState gameState)
    {
        switch (gameState)
        {
            case GameState.LevelComplete:
                ShowLevelComplete();
                HideGame();
                break;
        }
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    private void ShowGame()
    {
        ShowCG(gameCG);
    }

    private void HideGame()
    {
        HideCG(gameCG);
    }

    private void ShowLevelComplete()
    {
        ShowCG(levelCompleteCG);
    }

    private void HideLevelComplete()
    {
        HideCG(levelCompleteCG);
    }

    private void ShowCG(CanvasGroup cg)
    {
        cg.alpha = 1f;
        cg.interactable = true;
        cg.blocksRaycasts = true;
    }

    private void HideCG(CanvasGroup cg)
    {
        cg.alpha = 0f;
        cg.interactable = false;
        cg.blocksRaycasts = false;
    }
}

 

DataManager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DataManager : MonoBehaviour
{
    public static DataManager instance;

    [Header(" Data ")]
    private int coins;
    private int score;
    private int bestScore;

    private void Awake()
    {
        if (instance == null)
            instance = this;
        else
            Destroy(gameObject);

        LoadData();
    }
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }

    public void AddCoins(int amount)
    {
        coins += amount;
        SaveData();
    }

    public void RemoveCoins(int amount)
    {
        coins -= amount;
        coins = Mathf.Max(coins, 0);
        SaveData();
    }

    public void IncreaseScore(int amount)
    {
        score += amount;

        if (score > bestScore)
            bestScore = score;

        SaveData();
    }

    public int GetCoins()
    { 
        return coins;
    }

    public int GetScore()
    { 
        return score;
    }

    public int GetBestScore()
    {
        return bestScore;
    }

    private void LoadData() 
    {
        coins = PlayerPrefs.GetInt("coins", 150);
        score = PlayerPrefs.GetInt("score");
        bestScore = PlayerPrefs.GetInt("bestScore");
    }

    private void SaveData() 
    { 
        PlayerPrefs.SetInt("coins", coins);
        PlayerPrefs.SetInt("score", score);
        PlayerPrefs.SetInt("bestScore", bestScore);
    }
}

 

UIManager.cs 추가 작업
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;----------->추가

public class UIManager : MonoBehaviour
{
    public static UIManager instance;

    [Header(" Elements ")]
    [SerializeField] private CanvasGroup gameCG;
    [SerializeField] private CanvasGroup levelCompleteCG;

    [Header(" Level Complete Elements ")]------->아래 4가지 모두추가 
    [SerializeField] private TextMeshProUGUI levelCompleteCoins;
    [SerializeField] private TextMeshProUGUI levelCompleteSecretWord;
    [SerializeField] private TextMeshProUGUI levelCompleteScore;
    [SerializeField] private TextMeshProUGUI levelCompleteBestScore;
    
    
    
    
     void Start()
 {
     ShowGame();------->신규 추가
     HideLevelComplete();-------->신규 추가

     GameManager.onGameStateChanged += GameStateChangedCallback;
 }
 
 
 
 private void ShowLevelComplete()
 {
 	 levelCompleteCoins.text = DataManager.instance.GetCoins().ToString();---->신규추가
     levelCompleteSecretWord.text = WordManager.instance.GetSecretWord();---->신규추가
     levelCompleteScore.text = DataManager.instance.GetScore().ToString();---->신규추가
     levelCompleteBestScore.text = DataManager.instance.GetBestScore().ToString();---->신규추가
     
     ShowCG(levelCompleteCG);

 

 

작업 결과

작업전 화면

 

결과 화면

반응형