TIL

내일배움캠프 33일차 TIL

kimseung2331 2024. 2. 7. 20:19

오늘 학습한 내용

[UI]

 

잡혀있는 앵커를 기준으로 트랜스폼의 좌표가 결정된다.
피벗 - 본인 오브젝트의 좌표를 결정한다.
앵커 프리셋에서 쉬프트를 누르면 피벗도 함께 위치가 바뀐다.
스트레치 - 값이 늘어나면 앵커를 기준으로 크기가 줄어든다.
부모의 크기가 변해도 자식 오브젝트도 거기에 맞춰 변한다.

 

[컴퍼넌트]

 

Content Size Fitter
입력한 텍스트의 길이에 따라 텍스트 오브젝트의 Width, Height가 수정된다.

 

Veritical LayoutGroup
자식 오브젝트들의 좌표가 내가 레이아웃 설정한 것에 맞춰 고정된다.

 

[데이터 저장]

 

PlayerPrefs대신 스크립터블 오브젝트를 만들어서 인스펙터를 넣어 정보를 관리하는 방식으로 할 수 있지만
빌드를 해서 실행하면 스크립터블 오브젝트는 읽기 전용이 되어버려서 껐다 킬때마다 초기화가 되는 현상이 발생한다.
그래서 보통 변하지 않는 값들만 스크립터블 오브젝트로 만들고 값이 자주 변하는 데이터는 Json을 사용한다.
자바스크립트의 문법을 이용해서 데이터를 키값과 밸류값으로 저장한다.

...
// 데이터 저장 함수
string data = JsonUtility.ToJson(UserData User, true); 
string path = Path.Combine(Application.dataPath, User.Name + ".Json");
// dataPath는 에셋폴더의 경로를 지정해 주는 것
// persistentDataPath는 특정운영체제에서 앱이 사용할 수 있게 허용한 경로
File.WriteAllText(path, data);  // 경로에 데이터를 저장

 

...
//데이터 불러오기 함수
public void LoadUserData(string userName)
string path = Path.Combine(Application.dataPath, userName + ".json")
string data = File.ReadAllText(path);
UserData User = JsonUtility.FromJson<UserData>(data)

 

딕셔너리는 기본적으로 직렬화가 안된다.
그래서 리스트로 임시로 값을 받아서 딕셔너리로 값을 넣어준다.
딕셔너리는 키가 없으면 그 순간 바로 에러가 나기 때문에 값을 불러오기 전에 예외처리를 해줘야 한다.

 

오늘의 회고

 

해야 할 일

  • 1. 팀프로젝트 진행