🐧. Today
오늘은.. 아주.... 아주!!!! 행복한 날이다. 후하하하하ㅏㅏ!! 굉장히!! 매우!! VEEEEEEEEEERY 기분이 좋다!
이 텐션, 대체 무슨 일이야!!
~ 라고 물어보신다면~ 대답해 드리는 게 인지상정!
내 멘탈의 파괴를 막기 위해~ 프로젝트의 평화를 위해~ 로그와 에러 메시지, 눈물을 뿌리고 다니는~ 개발자의 감초, 귀염둥이 주니어! 나, 김펭귄! 포럼들을 뛰어다니는 나, 김펭귄에겐 아름다운 미래, 밝은 내일이 기다리고 있다!
..큼큼, 죄송합니다. 기분이 너무 좋아서 그만..
오늘 이렇게 들뜬 이유는 서버 움직임 동기화에 성공했기 때문이다! 후하하하~ 굉장히 신난다 ㅠㅜㅠㅜ 감격스러워서 눈물 날 정도다.
화면을 녹화하면서 알게 되었는데, 위아래 방향으로는 동기화가 되지 않고 있다. (움직인다는 사실에 너무 감동해서 버그가 있는지도 몰랐다, 하핫..) 근 이틀 간 폐관 수련에 들어간 보람..은 사실 없다. 이건 아래서 다시 이야기 하기로 하고, 폐관 수련에 들어간 계기는 도통 이유를 알 수 없는 문제가 있었기 때문이다.
현재 위 프로젝트는 Packet이라는 것을 사용해서 로컬 서버와 통신하고 있다. C_Move (클라이언트에서 서버로 보내는) 패킷도 정상적으로 서버가 받았고, S_Move (서버가 클라이언트로 보내는) 패킷도 정상적으로 클라이언트가 받는 걸 확인했다. 그런데 도통 S_Move 패킷에 담긴 값을 받은 클라이언트가 값을 인식하지 못하는 것이었다.
처음에는 수취인 고객이 택배를 받지 않았나 하고 중단점을 찍어봤는데, 분명 받았다. 발신인 고객이 접수한 택배를 성공적으로 취합했고, 해당 택배를 담당하기로 한 기사님도 배송을 출발한 것을 확인했다. 그런데 수취인은 택배를 받은 적이 없다고 주장한다. 이게 무슨 말도 안되는..?
이에 우리는 곰곰히 생각한 끝에 택배 주소가 잘못되었을 것이라는 결론을 내렸다. 아니나 다를까, 택배 주소가 잘못된 게 맞았다. 싱글벙글 택배 주소를 일치시키고 다시 빌드를 하며 우리는 반드시 이번엔 성공할 것이라는 확신을 가졌다.
"엥? 아뇨 저는 받은 적이 없다니까요?!"
그렇다, 이런 연유로 폐관 수련에 들어가게 된 것이다. 도통 이유를 알 수 없었기 때문에 처음부터 하나하나 분석해가며 어디가 문제점인지 찾고 또 찾았다. 그리고 오늘 문제점을 찾았다.
알고 계셨나요? Instatiate(gameObject);는 GameObject를 반환하는 메서드라는 사실을..? 사실 알고 있었다. 그런데 등장 밑이 어둡다고, 일말의 의심조차 하지 않았던 게 화근이었다. 서버를 처음 다루다보니 분명 어딘가 서툴게 작업을 했을 것이라 생각했지, 실수했을 거라곤 생각도 못했다.
GameObject gameObject = Resources.Load<GameObject>("t_PilotPlayer");
Instantiate(gameObject);
gameObject.name = info.Name;
_objects.Add(info.ObjectId, gameObject);
pilotPlayerController = gameObject.GetComponent<t_PilotPlayerController>();
pilotPlayerController.Id = info.ObjectId;
pilotPlayerController.PosInfo = info.PosInfo;
pilotPlayerController.Stat = info.StatInfo;
문제되었던 코드다. 2번째와 3번째 줄이 핵심이었다.
GameObject gameObject = Instantiate(Resources.Load<GameObject>("t_PilotPlayer"));
gameObject.name = info.Name;
_objects.Add(info.ObjectId, gameObject);
pilotPlayerController = gameObject.GetComponent<t_PilotPlayerController>();
pilotPlayerController.Id = info.ObjectId;
pilotPlayerController.PosInfo = info.PosInfo;
pilotPlayerController.Stat = info.StatInfo;
이렇게 해주니 정상적으로 작동되었다.
명심하자, Instatiate(gameObject)는 GameObject를 반환하는 메서드다!
'취준 > 스파르타 내일배움캠프 Unity' 카테고리의 다른 글
23.10.30 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.82 (0) | 2023.10.30 |
---|---|
23.10.26 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.78 (0) | 2023.10.27 |
23.10.25 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.77 (0) | 2023.10.25 |
23.10.23 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.75 (0) | 2023.10.23 |
23.10.12 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.64 (0) | 2023.10.12 |