public class GameManager : MonoBehaviour {
public static GameManager Instance = null;
private void Awake() {
if (Instance == null) {
Instance = this;
DontDestroyOnLoad(this);
} else {
Destroy(gameObject);
}
}
}
뿐만 아니라, 오브젝트에 포함된 아래의 자식 객체들 또한 손상되지 않는다는 점을 특징으로 합니다.
뒤끝 서버와 통신하고 데이터를 캐싱하는 BackendManager
에러나 안내문 등을 최상위 UI로 띄워주는 AlertUI
뒤끝 서버 또는 비동기와 통신하는 동안 로딩 화면을 띄워주는 LoadingUI
LoginScene
LoginScene은 사용자가 로그인을 수행하는 신입니다.
해당 신에서는 아래와 같이 ‘멀티 캐릭터의 유저(계정) 회원가입’과 ‘로그인’ 기능을 구현하게 됩니다.
이 부분에서, 멀티 캐릭터를 사용하는 프로젝트와 그렇지 않은 프로젝트의 차이점이 드러나는데요
계정이 곧 캐릭터였던 일반 프로젝트와 달리, 멀티 캐릭터를 사용하는 프로젝트는 한 계정에 여러 캐릭터를 가질 수 있게 됩니다. 그렇기 때문에 멀티 캐릭터 프로젝트는 로그인과 닉네임 설정 단계가 분리됩니다.
위 이유로 이번 예제 게임도 유저가 로그인이나 회원가입을 성공하면, 즉시 다음 신으로 이동하도록 구현되어 있다는 점! 유의해 주시기 바랍니다
해당 스크립트는 LoginUI 내부의, LoginUI.cs에서 확인할 수 있습니다.
✅ CharacterSelectScene
CharacterSelectScene 신은 이번 예제 게임에서 가장 핵심이 되는 부분으로, 크게 아래 두 가지 작업을 진행하게 됩니다.
캐릭터 생성하기
(멀티) 캐릭터 목록 불러오기
(멀티) 캐릭터 목록 불러오기
만약, 계정에 이미 생성된 캐릭터가 있다면? 아래와 같은 ‘캐릭터 목록’이 먼저 노출됩니다.
이번 멀티 캐릭터 예제 게임의 핵심 신이라고 할 수 있겠는데요 유저가 해당 신에 진입하자마자, 캐릭터 리스트를 불러와 List 형태로 저장하고 UI를 통해 보여줍니다.
이때 캐릭터 리스트를 불러오는 함수를 통해, 게임 정보 테이블도 함께 불러올 수 있습니다. 이를 활용하면 위와 같이, 캐릭터 목록 창에서 ‘캐릭터의 외모’나 ‘스텟’을 함께 표시할 수 있어요!
추가로 해당 신에서는 아래 기능들도 함께 구현하게 됩니다.
내 캐릭터 리스트 불러오기
캐릭터 생성
캐릭터 삭제
캐릭터를 선택하여 로그인(게임 시작)
계정 로그아웃
계정 탈퇴
캐릭터 생성하기
캐릭터 생성 단계에서는 위와 같이 닉네임과 캐릭터의 초기 데이터를 설정할 수 있습니다.
여기서 설정한 초기 데이터가 캐릭터에 등록되는 과정은 아래와 같습니다. (데이터 저장을 위해서는 로그인이 필수이기 때문에, 아래와 같은 추가 프로세스가 필요해요)
① 캐릭터 생성 후 리턴되는 uuid와 inDate를 획득합니다.
② 획득한 uuid와 inDate로 캐릭터 로그인을 합니다.
③ 캐릭터의 모양, 색상, 직업 등 초기 제이터를 USER_PROFILE 테이블에 새로 등록합니다.
④ 등록의 성공 여부와 관계없이 로그아웃하고, 다시 캐릭터 리스트 화면으로 돌아갑니다.
⑤ 캐릭터 리스트를 다시 불러와 표시하거나, 캐릭터 생성에서 사용된 데이터를 캐싱하여 List에 추가합니다.
⑥-① 데이터 등록에 성공하면, 캐릭터 선택 창에서 데이터를 표시합니다.
⑥-② 데이터 등록에 실패하면, 로그인 이후 다시 데이터 초깃값을 세팅하도록 캐릭터 생성 창 UI를 표시합니다.
캐릭터 선택 UI는 CharacterSelectUI.cs, 캐릭터 생성 UI는 CharacterCreateUI.cs에서 확인할 수 있습니다.
✅ InGameScene
InGameScene은 캐릭터 로그인 이후, 게임 정보 데이터를 수정할 수 있는 InGame 신입니다.
해당 신에 진입하면, 특정 테이블의 데이터를 위와 같이불러와 수정할 수 있으며, 수정 과정은 아래와 같습니다.
① InGameScene에서 데이터 수정 및 저장
② 로그아웃 시도
③ 성공하면 CharacterSelect 신으로 이동 (CharacterSelect 신은 위에서 다루었던 내용입니다)
④ CharacterSelect 신에서 초기화가 진행되며, 캐릭터 리스트를 불러올 때 수정된 데이터를 표시
인 게임 UI는 InGameUI 오브젝트의 InGameUI.cs에서 확인할 수 있습니다.
2. 따라 하기 전, 참고해 주세요!
1. 본 예제 게임의 모든 UI 스크립트에는 뒤끝 함수를 직접 호출하는 로직이 존재하지 않습니다. 전역으로 사용 가능한 BaxkendManager.cs에서 모든 뒤끝 함수를 관리하고 있으며, 해당 클래스를 통해 뒤끝 함수를 호출할 수 있습니다.
2. BackendManager에서 UI가 요청했을 때, 성공 여부와 에러 정보만 반환합니다.
3. 캐릭터 로그인, 캐릭터 삭제, 유저(계정) 회원 가입과 같은 기능은 bool 값을 사용하여 프로세스 진행 여부를 구성할 수 있습니다.
4. 반면에 캐릭터 리스트 불러오기와 같이, 추가 정보가 필요한 요청의 경우는 BackendManager에서 요청이 오면 결과를 캐싱합니다.
5. UI는 성공 여부가 true인 경우, 위 4번의 BackendManager에 캐싱 된 데이터를 사용하여 구현됩니다.
여기까지, 오늘은 ‘멀티 캐릭터 예제 게임’의 구성과, 프로세스를 함께 알아보았는데요
이번 예제 게임의 코드를 활용하면, 보다 빠른 게임 개발이 가능하실 것으로 예상됩니다! 자유롭게 연구하고, 뜯어보시면서 만들고 싶었던 게임을 개발하시는 데 보탬이 된다면 좋겠습니다.