반응형
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);
작업 결과
반응형
'새내기 게임 개발자[Unity]' 카테고리의 다른 글
UIM, Data Next 작업 진행순서 (0) | 2025.06.21 |
---|---|
Keyboard Colorize 코드작업 (0) | 2025.06.19 |
Main Canvas에 Submit Button, Backspae Key 코드 추가작업 (0) | 2025.06.18 |
WordContainer, InputManager, WordManager 까지 코드정리 (0) | 2025.06.18 |
Words Game 오픈이 드디어 얼마 남지가 않았다. (0) | 2025.06.05 |