Unity 프로젝트 오류 해결

Lungnaha·2022년 3월 4일
1

끄적끄적

목록 보기
1/3

💪 들어가며...

Unity를 활용해서 메타버스 프로젝트를 진행하면서 오랜 기간 고민하고 경험했던 문제들을 공유하고 저만의 해결법을 나누어보는 시간을 가져보겠습니다.
아래가 무조건적인 정답은 아니며, 더 좋은 의견이 있으시면 댓글로 이야기 부탁드립니다! 😁

🍕 중복 아이디 로그인 방지 기능

게임에 중복 아이디의 로그인 방지를 하는 기능이 필요했습니다.
로그인 및 회원 가입을 Mysql 연동을 통해 진행했고, 서버는 Photon 서버를 사용했습니다.

Photon 에서는 변수 동기화 등을 통해서 처리를 하거나, DB의 세션을 통해 다들 처리를 하던 것 같던데, 제 코딩 및 여러 가지 능력 부족으로 일주일 넘게 시도해봤지만 번번히 실패했습니다. ㅜㅜ

그러던 중, Photon의 변수 동기화가 아닌, 자신을 제외한 서버 내 사용자의 아이디를 얻어오고 이를 비교해서 중복 로그인을 방지하면 되겠다는 생각에 이를 활용해서 코드를 작성해 보았습니다.

코드는 급하게 짜서 조금 비효율적인 것도 같지만, 일단 게임 동작을 시켜보니, 중복 로그인을 방지할 수 있었습니다.
즉 로그인을 성공해서 게임에 들어오려고 할때, 서버내 사용자들의 닉네임을 비교하고, 있다면 바로 즉시 서버에서 내보내도록 구현되어있습니다.

🍔 Scene 전환 시 Voice 동기화 안됨

게임에서 방에 들어가거나 이동할 때, Scene 전환이 필요했고, 해당 과정에서 캐릭터는 잘 이동했으나, Voice 자체가 이동이 안되거나, 방끼리 분리되어 실행되지 않는 문제가 발생했습니다.
즉, 방마다 따로 Voice가 가능하도록 하고 싶었습니다.
(Voice의 구현은 Photon Voice를 사용하였습니다.)

해당 과정을 위해 여러가지 시도를 해보았지만 제가 Photon에 대한 이해가 부족한 상태에서 프로젝트를 진행해서 그런지 Voice 방을 나가고 생성하는 것에 어려움을 겪었습니다.

그러던 중, Voice 서버와 메인 서버가 같은 것을 사용한다는 것을 알았고, Voice를 분리해서 생각하는 것이 아니라, 아예 Scene 전환을 할 때, 메인 서버의 방을 바꾸어주면 되겠다는 아이디어를 가지게 되었습니다.

방 전환 시에 C# 스크립트 끼리 변수를 공유할 수 있다는 것을 알고 있었기에 공유 변수를 활용해서 상황에 맞게 서버 방의 전환이 가능하도록 구현해보았습니다.

참고로 위의 코드는 데모 버전으로 Scene 이동은 구현되어 있지 않았을 때의 코드입니다.

혹시 Scene 전환을 원하신다면, 위의 첫 번째 코드에서 원하는 Scene으로 전환하는 코드 한줄만 추가해주시면 원하는 기능을 구현할 수 있습니다.
(해당 과정은 이후에 프로젝트를 진행하면서 잘 동작하는 것을 확인했습니다~)

profile
Long🌈Now😁Happy💖

0개의 댓글