캠프 시작하고 한 동안 체중계 건전지가 없어서 몸무게를 못재고 있었다.
저번주에 사우나에서 쟀을 때 2달전보다 5kg 줄어있던데... 사실이면 진짜 심각한데??? 내일은 건전지 꼭 사야지
[System.Serializable] 그리고 래핑 클래스
오늘은 짧게!
개인과제를 하면서 날 괴롭혔던 두 가지를 알아보고자 한다.
- 유니티에서 Json을 이용하여 PlayerPrefs 저장
- 근데 저장해야 되는게 class 를 담은 List
리스트에 담길 Account 클래스
public class Account
{
public string id;
public string name;
public string pw;
public int cash;
public int balance;
}
public List<Account> _saveAccounts = new List<Account>();
내가 저장해야할 List<Account> _saveAccounts
string data = JsonUtility.ToJson(_saveAccounts);
data 는 _saveAccounts 를 직렬화 하여 string으로 가지고있다.
하지만 이녀석을 디버깅 해보면?
{}
이렇게 된다...
첫 번째 이유는 [System.Serializable] 을 Account 클래스에 넣어주지 않아서 직렬화를 할 수 없었다.
[System.Serializable]
public class Account
{
public string id;
public string name;
public string pw;
public int cash;
public int balance;
}
자 이제 어떻게 될까?
{}
마찬가지다.
그 이유는 다음과 같았다.
- List는 직렬화 할 수 없다.
- List를 직렬화 하기 위해선 List를 담은 Class를 직렬화 하면 된다.
그래서 래핑 클래스를 따로 만들어줘야 한다는 것이었다.
[System.Serializable]
public class AccountDB
{
public List<Account> _saveAccounts = new List<Account>();
}
래핑 클래스 AccountDB를 만들고
private AccountDB _db = new AccountDB();
객체를 하나 만들어 준다음
_db._saveAccounts.Add(account);
string data = JsonUtility.ToJson(_db);
_db 의 List<Account> 에 저장할 Account 를 넣어주고
직렬화를 시킨다면?
저장이 됐다!
'스파르타 내배캠' 카테고리의 다른 글
스파르타 내배캠 Unity 3기 33일차 (1) | 2024.02.07 |
---|---|
스파르타 내배캠 Unity 3기 32일차 (1) | 2024.02.07 |
스파르타 내배캠 Unity 3기 30일차 (0) | 2024.02.02 |
스파르타 내배캠 Unity 3기 29일차 (0) | 2024.02.01 |
스파르타 내배캠 Unity 3기 28일차 (0) | 2024.01.31 |