ScreenToWorldPoint() 함수는 스크린 위치를 월드 위치로 변환하는 함수다. 이걸 이용하면 마우스의 위치를 월드상의 위치로 바꿔줄 수 있다.
⚔ 마우스 위치를 월드 위치로 변경
void Update()
{
// ScreenToWorldPoint("스크린 위치(여기선 마우스 위치)");
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = mousePos;
}
PlayerPrefs는 <key,value>로 데이터를 저장하며, 유니티에서 간편하게 데이터를 저장할 수 있는 방법이다. 하지만 데이터를 암호화 없이 로컬에 저장하기 때문에 중요하지 않은 데이터를 저장해야한다. (ex: 배경음 볼륨, 진동 설정 등)
PlayerPrefs에서 Prefs는 Preferences(설정, 환경설정)의 줄임말로 게임의 설정값이나 사용자 맞춤 데이터를 의미합니다.
| 함수명 | 설명 | 예시 |
|---|---|---|
| SetFloat | Float형식의 데이터를 저장할 때 사용한다. | PlayerPrefs.SetFloat("f", 3.0f); |
| SetInt | Int형식의 데이터를 저장할 때 사용한다. | PlayerPrefs.SetInt("i", 3); |
| SetString | String형식의 데이터를 저장할 때 사용한다. | PlayerPrefs.SetString("s", "three"); |
| GetFloat | Float형식의 데이터를 불러할 때 사용한다. | PlayerPrefs.GetFloat("f"); |
| GetInt | Int형식의 데이터를 불러할 때 사용한다. | PlayerPrefs.GetInt("i"); |
| GetString | String형식의 데이터를 불러할 때 사용한다. | PlayerPrefs.GetString("s"); |
| HasKey | 해당 키가 존재하는지 확인할 때 사용한다. | PlayerPrefs.HasKey("s"); |
| DeleteKey | 해당 키가 PlayerPrefs에 존재하면 삭제한다. | PlayerPrefs.DeleteKey("s"); |
| DeleteAll | PlayerPrefs의 모든 키와 데이터를 삭제할 때 사용한다. | PlayerPrefs.DeleteAll(); |
| Save | PlayerPrefs의 Preferences(설정값, 데이터)를 즉시 디스크에 저장한다. | 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);
}
}