PlayerPrefs : key, value의 Pair로 저장해야 한다.
- 데이터 저장하기
PlayerPrefs.SetFloat("bestScore", 어떤 숫자 값);
PlayerPrefs.SetString("bestScore", 어떤 문자 열);
- 데이터 불러오기
어떤숫자값 = PlayerPrefs.getFloat("bestScore");
어떤문자열 = PlayerPrefs.getString("bestScore");
- 데이터를 저장했었는지 확인
→ 있으면 true 없으면 false를 반환
PlayerPrefs.HasKey("bestScore")
- 데이터를 모두 지우기
PlayerPrefs.DeleteAll();
[ 최고 점수 보여주기 ]
1. 로직 생각하기
if (최고 점수가 없으면)
{
최고점수 = 지금점수
}
else
{
if(최고점수 < 지금점수)
{
최고점수 = 지금점수
}
}
전체 gameManager 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class gameManager : MonoBehaviour
{
public GameObject square;
public Text timeTxt;
float alive = 0f;
public static gameManager I;
public GameObject endPanel;
public Text thisScoreTxt;
public Text maxScoreTxt;
bool isRunning = true;
public Animator anim;
void Awake()
{
I = this;
}
// Start is called before the first frame update
void Start()
{
Time.timeScale = 1.0f;
InvokeRepeating("makeSquare", 0.0f, 0.5f);
}
void makeSquare()
{
Instantiate(square);
}
// Update is called once per frame
void Update()
{
if (isRunning)
{
alive += Time.deltaTime;
timeTxt.text = alive.ToString("N2");
}
}
public void gameOver()
{
isRunning = false;
anim.SetBool("isDie", true);
Invoke("timeStop", 0.5f);
thisScoreTxt.text = alive.ToString("N2");
endPanel.SetActive(true);
if(PlayerPrefs.HasKey("bestscore") == false)
{
PlayerPrefs.SetFloat("bestscore", alive);
}
else
{
if(alive > PlayerPrefs.GetFloat("bestscore"))
{
PlayerPrefs.SetFloat("bestscore", alive);
}
}
float maxScore = PlayerPrefs.GetFloat("bestscore");
maxScoreTxt.text = maxScore.ToString("N2");
}
public void retry()
{
SceneManager.LoadScene("MainScene");
}
void timeStop()
{
Time.timeScale = 0.0f;
}
}
과제 - 떨어지는 네모 없애기
square.cs를 수정하면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class square : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
float x = Random.Range(-3.0f, 3.0f);
float y = Random.Range(3.0f, 5.0f);
transform.position = new Vector3(x, y, 0);
float size = Random.Range(0.5f, 1.5f);
transform.localScale = new Vector3(size, size, 1);
}
// Update is called once per frame
void Update()
{
if(transform.position.y < -5.0f)
{
Destroy(gameObject);
}
}
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "balloon")
{
gameManager.I.gameOver();
}
}
}
'스파르타코딩 공부내용 정리 > 유니티' 카테고리의 다른 글
4주차 내용정리 (0) | 2024.04.04 |
---|---|
3주차 내용정리 (1) | 2024.03.29 |
2주차 2강 풍선 & 마우스 만들기 (0) | 2024.03.20 |
1주차 8강 숙제 - 빨간 빗방울 만들기 (0) | 2024.03.20 |
1주차 7강 게임 끝내기 (0) | 2024.03.20 |