inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Data Manager #1

json 딕셔너리 관련

299

sehan

작성한 질문수 6

0

Json을 딕셔너리로 담는걸 제가 응용해서 한번 쓰려고 이것저것 해보는중인데요!

항상 다른 스크립트에서 

예를 들어 data 라는 싱글톤이 있고, 그 안에서 json을 불러와서 딕셔너리로 바꿔준 후 이걸 다른 스크립트에서 사용하기 위해

data.mondict[101].hp

이런식으로 불러오려고 하면 키를 찾을수없다고합니다...

키 , out value 를 써봐도 널값만 뜹니다...

웃긴게 파싱? 한 스크립트 내에서는 잘 써진다는건데...

제가 놓치고 있는 게 있을까요?

unity C#

답변 1

0

Rookiss

위 내용만으로는 알 수 없습니다.
그리고 코딩하면서 뭔가 생각처럼 안될 때는 
그냥 반사적으로 디버깅을 하실 생각부터 하셔야 합니다.

data.mondict를 로드하는 부분에 breakpoint를 걸고
데이터가 잘 파싱되는지 확인이 먼저 필요할 것 같네요. (101 키가 진짜 없는지)

0

sehan

루키스님의 조언에 따라 잊고만 있던 디버깅을 해보려고 강의까지 다시 듣고 왔는데요..

제가 디버깅 이해를 못한건지..뭔가 값도 안 뜨고 f10 , f11을 눌러도 별다른 반응이 없더라고요..

 

그래서 다시 디버깅 강의를 듣는 도중에 다른 스크립트를 또 하나 만들어서(2번째 사진) 해보니 2번째 사진에서는 키값을 제대로 받아오더라구요..?

 

그런데 1번째 사진에서는 암만해도 값을 못 받아오던데..물론 아직 공부가 부족해서 그러겠지만..제가 놓치고 있는 게 있을까요?

 

 

0

Rookiss

별 반응이 없다는게 어떤 의미인지 모호한데요.
혹시 DataManager에서 MonsterDict로드하는 부분은 잘 실행되고 있나요?

0

sehan

별 반응이 없다는 건 아무래도 제가 디버깅 이해를 제대로 못 한건지...원하는 값을(여기서라면 키값이겠네요!) 검색을 못 하는 것 같습니다...

이 부분은 제가 디버깅에 대해 좀 더 공부를 하면 될 거 같습니다...

 

아래는 제가 혼자서 공부용으로 가볍게 만들어본 DataManager  (이름만 다르고 용도는 같습니다!) 인데요!

여기서는 다 잘 불러와집니다 ㅠㅠ..그런데 꼭 다른 스크립트에 사용하려고 하면 키값을 찾을 수 없다고 오류를 띄우네요...(위의 두번째 사진에서는 또 불러와지는데 코드를 그대로 복붙해서 다른 스크립트에 넣으면 마찬가지로 키값 오류를 띄웁니다...

0

Rookiss

버그는 눈으로 찾는게 아니라 무조건 디버깅으로 찾아야 합니다.
위 내용만으로는 저도 알 수 없습니다.
연습문제라 생각하고 더 고민해보시고
오랫동안 고민해도 해결이 안 되면 rookiss@naver.com 로 압축해서 보내주세요.

0

sehan

혼자 2주 가까이 구글링이며 온갖 강의들을 봤는데도 해결이 안되서..ㅠㅠ
따로 문제가 되는 부분만 프로젝트로 보냈습니다..!

0

Rookiss

전체 프로젝트 압축해서 보내주세요 설정이 너무 귀찮습니다 ㅎㅎ

0

sehan

번거롭게 해서 죄송합니다!
다시 보내드렸습니다!

1

Rookiss

안녕하세요.
확인해봤는데 아직 디버깅에 대한 이해도가 부족하신 것 같아 step by step으로 설명 드립니다.

위에 breakpoint를 잡고

MonsterData쪽에도 breakpoint를 잡은 상태입니다.


Unity에 연결을 누릅니다.

그리고 유니티에서 Play를 해보면

breakpoint가 잡히는데 MonsterData 로드하는 코드보다
Monster3.cs 코드가 먼저 잡히고 있습니다.

그리고 살펴보면 Count = 0으로 아예 데이터가 없는 상태입니다.
여러 GameObject가 있을 때는 어떤 애가 먼저
Start가 실행될지 미정이기 때문에 발생한 문제입니다.

MonsterData 쪽 코드가 더 먼저 실행되도록
Start보다 먼저 실행되는 Awake로 수정해보시기 바랍니다.



1

sehan

와...Awake 나 Start나 별차이 없는 줄 알았는데..이런 큰 차이가 있었군요...

 

그리고 디버깅 모드의 사용법마저 한방에 제대로 이해됐습니다..

 

너무 훌륭한 답변덕분에 혼자서 끙끙대던 시간이 바보처럼 느껴져서 조금 웃기네요.

 

사진별로 단계별  설명 해주신거 정말 감사합니다! 덕분에 한번에 바로 다 이해됐습니다!

 

저와 비슷하게 고민하는 다른분들에게도 이 답변이 도움이 되었으면 좋겠습니다!

 

정말 감사합니다!

ResourceManager 클래스 관련 질문

1

21

2

몬스터 HP 게이지바 이동

0

20

1

매니저 관련 질문이 있습니다.

0

69

2

비쥬얼 스튜디오에서 unity연결이 없습니다.

0

74

2

UI 기능 관련 질문이 있습니다!

0

70

2

픽셀 좌표 스크린 좌표

0

48

0

전체적으로 코드 읽는게 굉장히 오래 걸리네요...

0

104

2

카메라 #2 수업 캐릭터 쓰러짐 해결

0

96

1

플레이어 움직임이 끝날때, 기울어짐 현상

0

100

1

Input 적용과 관련하여 질문 있습니다.

0

91

1

디버그 불가.. Unity에 연결 불가

0

98

1

달리기 애니메이션 에러

0

98

2

오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다

0

75

1

GetKey 오류

0

128

2

에셋을 어디에 올려두신지 알 수 있나요?

0

114

1

재귀호출? 오류나는데 왜 이래요 ?

0

178

6

Animation blending 파라미터 계산

0

75

1

newPos와 to지점이 겹쳐져야 하는거 아닌가요?

0

112

3

오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다

0

96

2

질문있습니다

0

155

2

아 이거 소스코드 같은거 없나요?

0

152

3

질문 드립니다. string.IsNullOrEmpty(name)

0

94

2

@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?

0

139

2

유니티6 NavMesh 안되는분들

1

193

1