본문으로 건너뛰기
버전: 5.11.7

멀티 프로젝트 등록

SDK 임포트 시, 설정값 초기화

새로운 버전의 SDK를 import하였을 때, 멀티 프로젝트 기능에 새로운 기능이 추가될 경우 설정된 Multi Project 기능이 초기화 될 수 있습니다.

import 이후 설정한 The Backend Multi Setting의 정보가 유지되었는지 확인해주시기 바랍니다.

멀티 프로젝트 사용 예시

멀티 프로젝트의 경우 다음과 같은 상황에서 사용할 수 있습니다.

  • 한 게임(빌드)에서 테스트 서버와 라이브 서버를 나누고자 할 경우
  • 한 게임(빌드)에서 국가별로 연동되지 않는 다른 서버를 나누고자 할 경우

사용법

1. 뒤끝 인스펙터 설정

유니티 상단에 The Backend > Edit Multi Settings를 클릭합니다.

프로젝트를 추가합니다.

2. 코드 작성

인스펙터에서 설정한 프로젝트들은 BackEnd.MultiSettings.MultiSettingManager을 통해 불러올 수 있습니다.
MultiSettingManager.FindByProjectName을 통해 프로젝트명을 검색하여 프로젝트를 불러올 수 있습니다.
만약 존재하지 않는 프로젝트라면 null이 리턴됩니다.

using System.Collections.Generic;
using UnityEngine;
using BackEnd;

public class BackendManager : MonoBehaviour {
void Start() {
BackEnd.MultiSettings.MultiProject multiProject = BackEnd.MultiSettings.MultiSettingManager.FindByProjectName("USA");

if(multiProject == null) {
Debug.LogError("해당 프로젝트를 찾을 수 없습니다.");
}

var bro = Backend.InitializeByMuiltiProject(multiProject,true, true);

if(bro.IsSuccess()) {
Debug.Log("초기화가 성공하였습니다.");
} else {
Debug.Log("초기화중 에러가 발생하였습니다" + bro);
}
}
}

초기화 프로젝트 선택

혹은 유저들에게 프로젝트를 선택하게 할 수도 있습니다.
다음은 저장된 프로젝트 리스트를 불러와 버튼 형태로 만들어, 클릭 시 해당 프로젝트로 초기화하는 함수입니다.

    [SerializeField] private GameObject multiCharacterButtonObject;

public void Initialize() {
List<MultiProject> multiProjectList = MultiSettingManager.theBackendMultiSettings.projectList;

for(int i = 0; i < multiProjectList.Count; i++) {
var obj = Instantiate(multiCharacterButtonObject, multiCharacterListGroup, true);
obj.transform.localScale = new Vector3(1, 1, 1);
int index = i;
obj.GetComponentInChildren<TMP_Text>().text = multiProjectList[i].projectName;
obj.GetComponent<Button>().onClick.AddListener(() => {
string clientAppId = MultiSettingManager.theBackendMultiSettings.projectList[index].clientAppId;
string signatureKey = MultiSettingManager.theBackendMultiSettings.projectList[index].signatureKey;

InitializeBackend(clientAppId, signatureKey);
});
}
}

private void InitializeBackend(string clientAppId, string signatureKey) {

BackendCustomSetting backendCustomSetting = new BackendCustomSetting();

backendCustomSetting.clientAppID = clientAppIdInputField.text;
backendCustomSetting.signatureKey = signatureKeyInputField.text;
backendCustomSetting.useAsyncPoll = true;

var bro = Backend.Initialize(backendCustomSetting);

if(bro.IsSuccess()) {
Debug.Log("초기화가 성공했습니다!");
} else {
Debug.LogError("초기화 중 에러가 발생했습니다!\n" + bro.ToString());
}
}