[Unity] 2주차 "풍선을 지켜라"

Flaming Bun·2025년 4월 1일

Unity

목록 보기
3/39

🔥 마우스의 위치를 월드상의 위치와 같게하는 방법

ScreenToWorldPoint() 함수는 스크린 위치를 월드 위치로 변환하는 함수다. 이걸 이용하면 마우스의 위치를 월드상의 위치로 바꿔줄 수 있다.

⚔ 마우스 위치를 월드 위치로 변경

 	void Update()
    {
        // ScreenToWorldPoint("스크린 위치(여기선 마우스 위치)");
        Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        transform.position = mousePos;
    }


🔥 PlayerPrefs

PlayerPrefs<key,value>로 데이터를 저장하며, 유니티에서 간편하게 데이터를 저장할 수 있는 방법이다. 하지만 데이터를 암호화 없이 로컬에 저장하기 때문에 중요하지 않은 데이터를 저장해야한다. (ex: 배경음 볼륨, 진동 설정 등)

PlayerPrefs에서 PrefsPreferences(설정, 환경설정)의 줄임말로 게임의 설정값이나 사용자 맞춤 데이터를 의미합니다.

📌 PlayerPrefs의 함수

함수명설명예시
SetFloatFloat형식의 데이터를 저장할 때 사용한다.PlayerPrefs.SetFloat("f", 3.0f);
SetIntInt형식의 데이터를 저장할 때 사용한다.PlayerPrefs.SetInt("i", 3);
SetStringString형식의 데이터를 저장할 때 사용한다.PlayerPrefs.SetString("s", "three");
GetFloatFloat형식의 데이터를 불러할 때 사용한다.PlayerPrefs.GetFloat("f");
GetIntInt형식의 데이터를 불러할 때 사용한다.PlayerPrefs.GetInt("i");
GetStringString형식의 데이터를 불러할 때 사용한다.PlayerPrefs.GetString("s");
HasKey해당 가 존재하는지 확인할 때 사용한다.PlayerPrefs.HasKey("s");
DeleteKey해당 가 PlayerPrefs에 존재하면 삭제한다.PlayerPrefs.DeleteKey("s");
DeleteAllPlayerPrefs의 모든 키와 데이터를 삭제할 때 사용한다.PlayerPrefs.DeleteAll();
SavePlayerPrefs의 Preferences(설정값, 데이터)를 즉시 디스크에 저장한다.PlayerPrefs.Save();

📌PlayerPrefs.Save() 함수

PlayerPrefs는 기본적으로 애플리케이션 종료 시 디스크에 씁니다. SetInt(), SetFloat() 등을 호출하면 임시로 저장되고 예기치 않게 종료될 경우 데이터가 저장되지 않을 수 있다. 따라서 중요한 데이터를 저장한 후에는 PlayerPrefs.Save()를 호출하는 것이 안전하다.


*⚔ PlayerPrefs 예시**

public class GameManager:MonoBehaviour
{
	string key = "bestScore";
    
    public void GameOver()
    {
    	(생략)
        
        // 최고점수("bestScore")가 있다면
        if (PlayerPrefs.HasKey(key))
        {
            float best = PlayerPrefs.GetFloat(key);
            // "최고점수 < 현재점수"라면
            if (best < time)
            {
                // 현재점수를 최고점수에 저장한다.
                PlayerPrefs.SetFloat(key, time);
                bestScore.text = time.ToString("N2");
            }
            else
            {
                bestScore.text = best.ToString("N2");
            }
        }
        else // "bestScore"가 없다면
        {
            // 현재 점수를 저장
            PlayerPrefs.SetFloat(key, time);
            bestScore.text = time.ToString("N2");
        }

        endPanel.SetActive(true);
    }
}

0개의 댓글