본문 바로가기

스파르타코딩 공부내용 정리/유니티

2주차 내용정리

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();
        }
    }
}