배운 것들
이번 주는 어몽어스의 벤트, 투표 로직에 대해 배웠다.
Grid Layout Group을 통해 자식의 UI 위치를 정렬 할 수 있다.
이후에 자식 오브젝트 중 하나 빼고 다 지우고 자식 오브젝트를 작업한 후 프리펩화 하고 복사하여 사용하면 효율적으로 배치가 가능하다.
LocalPlayer의 ActorNumber는 계속 증가한다.
PhotonNetwork.PlayerList를 불러와서 로컬 플레이어의 ActorNumber와 비교하는데 플레이어 리스트의 ActorNumber와 같으면 몇 번째인지 PlayerID에 i를 대입하여 (스폰 포인트를 초과하지 않도록) 생성한다.
mSpawnPoints[PhotonNetwork.LocalPlayer.ActorNumber % 8]은 중복때문에 ActorNumber가 증가하면서 다른 플레이어와 중복된 위치에 생성될 수 있다.
PhotonNetwork.CurrentRoom.Players가 딕셔너리인 것을 이용하여 foreach문을 돌면서 딕셔너리의 Value인 Player의 ActorNumber마다 해당 actorNumber를 비교하여 같으면 플레이어의 닉네임을 넣어주는 로직이다.
PhotonNetwork.CurrentRoom.IsOpen = false; 를 이용하여 게임이 시작하고 룸에 못 들어오게 할 수 있다.
애니메이션의 Speed를 -1로하면 (기본 값 1) 거꾸로 실행시킬 수 있는데 이를 이용하여 벤트에 들어가는 애니메이션만 만들어도 벤트로 나오는 애니메이션은 Speed를 -1로해 따로 만들지 않아도 된다.
애니메이션의 Can Transition To Self를 체크해제하면 바로 자기 자신으로 넘어오는 것을 막을 수 있다.
한 주 후기
이번 주는 벤트와 투표를 구현해보는 시간을 가졌다. 포톤 중 플레이어에 대해서 관리하는 법을 많이 다뤘던 것 같다.
수업을 따라가면서 버그가 많이 발생했었는데 자가적으로 버그를 고쳐보는 시간이 있었다. 벤트를 타는 중에 아무리 코드로 Collider에 접근해 끄려고 해도 꺼지지 않았는데 처음엔 포톤 동기화 문제인 줄 알았다가 인스펙터에서 수동으로 끄려고 해도 안 꺼지는 것을 보고 그건 아니겠구나 싶었다. 그래서 여러 시도를 통해 애니메이션 부분에서 문제가 있던 걸 알게 되었다. 애니메이션에서 벤트에 들어갈 때 Collider의 enable을 false하는 부분이 있었는데 유니티의 라이프사이클 상 코드 실행보다 애니메이션의 실행이 더 늦게 되므로 덮어씌워져서 접근할 수 없던 문제였다. 그래서 콜라이더를 끄는 작업은 코드로 분리시켜서 해결하게 되었다.
버그를 해결하는 작업은 답답하고 어렵지만 해결한다면 성취감이 느껴지는 일인 것 같다. 하나하나 콘솔로 찍어가면서, 코드의 흐름을 따라가고 문제인 부분을 찾는 것이 어렵지만 그 이후는 비교적 쉬운 것 같다. 그리고 이를 정리하고 다음에 적용하는 부분에서 내가 발전했다는 생각도 든다. 다음에도 재밌게 수업을 들었으면 좋겠다. 다음 주도 파이팅!
본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.
'유데미 스타터스 유니티 개발자 1기' 카테고리의 다른 글
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 23주차(개발) (0) | 2022.11.27 |
---|---|
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 22주차(개발) (0) | 2022.11.20 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 20주차(개발) (0) | 2022.11.06 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 19주차(개발) (0) | 2022.10.30 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 18주차(개발) (0) | 2022.10.23 |