일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스파르타내일배움캠프TIL
- Til
- 코테
- 내배캠
- 분반별
- 스파르타
- Action
- 스탠다드
- 오블완
- 마크다운
- 내일배움캠프
- 백준
- 스파르타내일배움캠프
- 티스토리챌린지
- string배열과 char
- 텍스트게임
- 프로그래머스
- 코딩테스트
- 코테풀기
- 내주말
- 알아볼것
- 분반별학습
- Input Field
- 유니티
- projectl
- 피셔예이츠
- 최종프로젝트
- 스파르타내배캠til
- 스파르타부트캠프
- input system
- Today
- Total
Ottoman
내일배움캠프 7주 5일차(33) TIL - 디버깅 ,직렬화 메모 본문
오늘은 쫒길 프로젝트가 없어서 못들었던 챌린지 강의와 메모를 정리하자
// 디버깅 메모
★ ★ ★ ★ 나의 실수를 먼저 의심하자 ★ ★ ★ ★
- 에디터에 캐싱 안함, 에디터 레이어 설정 잘못함, 체크 빼먹음 등등...
- 이거하고도 아니면 코드 보자
버그를 식별, 버그를 해결, 코드를 최적화
오류의 분류
런타임 오류 - 실행 중에 발생하는 오류. 무효한 연산, 인덱스오버플로우 등등
논리 오류 - 문법 문제는 없지만 의도와 다른 결과.
컴파일 에러 - 컴파일단계에서 나오는 오류. 문법오류, 변수선언문제 등등
예외 - 파일입출력, 서버관련... try catch로 처리되는 것들
디버그 => 창 => 열고자하는 창 선택
Code Coverage : 유니티를 설치하면 같이 설치되는 패키지
중단점걸기 단축키 F9
조건중단점 : 중단점 안걸린 코드에 마우스 오른클릭 => 조건부중단점 클릭

저 코드에 해당하는 조건이 나오는 경우 중단점에서 멈춘다.
활용 : Update()문에서 매프레임 누르지말고 조건에 해당하는 순간에 중단을 할 수 있다.
디버그창
호출스택 : 현재 중단점까지 오는 과정을 스택형태로 보여줌
조사식 : 직접 입력해서 변수를 추적할 수있다. 싱글톤포함 다른 클래스를 보고 있을 때도 변수의 실제내용을 볼 수 있다.
로컬: 중단점이 걸린 클래스 씬에 관련된 정보를 제공
자동: 알아서 추려줌
* 대체로 많이 필요한 정보는 싱글톤 매니저에 많음 => 조사식 사용을 많이 하게됨.
(중단점이 너무 많으면 유니티 연결이 느려지고 실행이 안될 때도 있다.)
단축키 : Shift + F11 : 현재 함수를 빠져나가 진행 ( 함수 안을 진행하고 있다면)
sprite.RemoveAll(obj=> obj == null);
사용 : 리스트 안에 null이 있어서 오류가 뜰 때 null을 지워서 안뜨게 할 수 있음.
- 런타임 실행 중에만 지워지고 플레이를 끄면 원래대로 돌아와서 유니티 인스펙터상엔 남아있음.
ui.name = ui.name.Replace("(Clone)", "");
프리팹을 생성하면 오브젝트이름 뒤에 (Clone)이 붙는데 이걸 ""로 없애는 코드다.
주소값찾기?
GetInstanceID()등으로 고유값을 알아낼 수 있다.
재귀함수는 트리구조를 파악할 때 좋음. 왠만하면 재귀함수는 쓰지 말자.
// Scroll Rect - Movement Type - Clamped
: 스크롤이 끝에 갔을 때 더 안땡겨지게 고정하는 모드
// 단축키 Ctrl + R : 참조된것을 한꺼번에 이름 바꾸기
// 단축키 Ctrl + F : 찾아서 한꺼번에 바꾸기
// 직렬화 메모
CSV, XML, JSON, YAML
Json뷰어 쓰면 보기 좋아짐(웹으로도 있음)
Json에는
Newtonsoft
Lti json
JsonUtility
유니티에서는 JsonUtility가 가장 빠르다.
단점은 지원하는 포맷이 적다. 지원하지 않는 포맷을 쓰려면 다른걸 써야한다.
Json으로 직렬화 할 변수들은 한 클래스에 따로 만들면 좋다. ( ItemData...)
[Systme.Serializable]
직렬화 되지않는 클래스,자료형들이 있다. (Dictionary). 이런건 커스텀직렬화를 하면 직렬화 할 수있다.
JsonUtility.ToJson(data);
JsonUtility.FromJson(data);
Transform 형식은 안되지만 Vector3와 쿼터니언은 직렬화 된다.
Scriptable Object는 빌드하면 수정할 수 없다. 절대로 변동되지 않는 정보들을 넣어라.
리지드바디와 스프라이트도 넣을 수 있다.
변동가능성있는 변수는 Json으로 저장해라.


💡 **저장**
`File.WriteAllText(Application.persistentDataPath + "/UserData.txt", json);`
> `File.WriteAllText("어디 경로에" , "어떤 데이터를?");`
`Application.persistentDataPath` : 현재 운영체제에 따른 임시 저장 경로
💡 **불러오기**
`JsonUtility.FromJson<UserData>(jsonData);`
> `JsonUtility.FromJson < 어떤 형식으로 > ( 어떤 json 데이터를 )`
'TIL' 카테고리의 다른 글
내일배움캠프 7주 토요일 TIL- 메모. 디자인패턴, layermask추가, enumflag (0) | 2024.06.02 |
---|---|
내일배움캠프 7주 토요일 TIL- 코루틴매니저? 프로퍼티에 이벤트? (0) | 2024.06.01 |
내일배움캠프 7주 4일차(32) TIL - 트러블슈팅 (0) | 2024.05.30 |
내일배움캠프 7주 3일차(31) TIL (0) | 2024.05.29 |
분반별 3주차 Q3 (0) | 2024.05.29 |