Skip to main content
Version: 5.11.9

NPC 대사를 서버에서 불러오기

수정이 잦은 NPC의 대사를 서버에서 동적으로 불러와 효과적으로 게임을 관리하세요.
대사 데이터를 서버에 업로드 하는 방법과 클라이언트에서 불러오는 방법을 자세히 다룹니다.

1. 시작하기 전에​

유저가 존재해야 합니다.​

'유저' 상단 메뉴에서 [게임 유저 생성]을 클릭해서 간단하게 유저를 생성할 수 있습니다.
아이디 'user1', 비밀번호 '1234'로 유저를 생성하세요.

create user

2. 데이터 테이블 업로드하기​

NPC의 대사를 작성하세요.​

예시 파일을 다운로드 받을 수 있습니다.
이 CSV 파일은 각 행이 NPC의 대사를 나타내며, 각 열은 다음과 같은 의미를 갖고 있습니다.

  • dialogueId: npcId와 대사 번호로 구성된 고유 식별자.
  • dialogueContents: NPC의 대사 내용.
  • npcId: NPC의 고유 번호.
  • npcName: 게임에서 보여주는 NPC의 이름.
  • npcEmotion: NPC의 대사와 관련된 감정.

sample chart

NPC의 대사 테이블을 서버에 업로드하세요.​

뒤끝 콘솔의 ‘차트’ 메뉴 상단에서 [차트 생성]을 클릭하세요.
차트명을 “NPC_dialogue”로 입력하고 [확인]을 클릭하면, 데이터 테이블 저장 공간이 생성됩니다.

create chart

방금 만든 차트를 클릭하고, 상단의 [차트 파일 업로드] 버튼을 클릭하세요.
그리고 NPC_dialogue.csv 파일을 업로드하면, 서버에 데이터가 올라간 것을 확인할 수 있습니다.
대사를 변경해야 할 때, 클라이언트를 새로 빌드할 필요 없이 서버에서 빠르게 수정하세요.

upload csv

모달을 닫은 뒤, 파일 목록 좌측의 체크박스를 선택하고, 상단의 [차트 파일 적용]을 클릭하세요.
여러 버전의 파일을 서버에 올리고, 클라이언트에서 기본으로 사용할 버전을 콘솔에서 지정할 수 있습니다.

3. 서버에서 NPC의 대사 데이터 불러오기​

NPC의 대사가 저장된 테이블의 ID를 복사하세요.​

사용할 파일의 ID를 뒤끝 콘솔에서 복사하세요.

스크립트를 생성하세요.​

새로운 스크립트를 생성하고, 이름을 ‘DataTable.cs’로 설정합니다.
해당 스크립트를 열어 내용을 다음과 같이 수정합니다.

using System.Collections.Generic;
using System.Text;
using UnityEngine;

// 뒤끝 SDK namespace 추가
using BackEnd;

public class DataTable {
private static DataTable _instance = null;

public static DataTable Instance {
get {
if(_instance == null) {
_instance = new DataTable();
}

return _instance;
}
}

public void GetDataTable(string fileId) {
// 파일 가져오기
Debug.Log($"{fileId}의 데이터를 불러옵니다.");
var bro = Backend.Chart.GetChartContents(fileId);

if(bro.IsSuccess() == false) {
Debug.LogError($"{fileId}의 데이터를 불러오는 중, 에러가 발생했습니다. : " + bro);
return;
}

Debug.Log("데이터 불러오기에 성공했습니다. : " + bro);
foreach(LitJson.JsonData row in bro.FlattenRows()) {
StringBuilder content = new StringBuilder();
content.AppendLine("dialogueId: " + int.Parse(row["dialogueId"].ToString()));
content.AppendLine("dialogueContents : " + row["dialogueContents"].ToString());
content.AppendLine("npcId : " + row["npcId"].ToString());
content.AppendLine("npcName : " + long.Parse(row["npcName"].ToString()));
content.AppendLine("npcEmotion : " + row["npcEmotion"].ToString());

Debug.Log(content.ToString());
}
}
}

BackendManager.cs에서 함수를 호출하세요.​

위에서 작성한 함수가 실행되려면, 게임을 실행했을 때 자동으로 실행되는 BackendManager에서 호출해야 합니다.
뒤끝 초기화와 뒤끝 로그인이 이루어진 이후에 함수들을 호출하세요.

using UnityEngine;
using System.Threading.Tasks;

// 뒤끝 SDK namespace 추가
using BackEnd;

public class BackendManager : MonoBehaviour {
void Start() {
var bro = Backend.Initialize(true); // 뒤끝 초기화

// 뒤끝 초기화에 대한 응답값
if(bro.IsSuccess()) {
Debug.Log("초기화 성공 : " + bro); // 성공일 경우 statusCode 204 Success
} else {
Debug.LogError("초기화 실패 : " + bro); // 실패일 경우 statusCode 400대 에러 발생
}

Test();
}

// 동기 함수를 비동기에서 호출하게 해주는 함수(유니티 UI 접근 불가)
async void Test() {
await Task.Run(() => {
BackendLogin.Instance.CustomLogin("user1", "1234"); // 뒤끝 로그인 함수

// 데이터 테이블 불러오기 로직 추가
// <파일 ID>을 뒤끝 콘솔 > 차트 > NPC_dialogue에서 등록한 차트의 파일 ID값으로 변경하세요.
BackendChart.Instance.GetDataTable("<파일 ID>"); // 예시 : "12345"

Debug.Log("테스트를 종료합니다.");
});
}
}