본문 바로가기
유니티 공부/Unity

Unity - Dialogue System for Unity + I2 Localization 연동 가이드

by 코딩하는 돼징 2025. 7. 23.
반응형

Dialogue System + I2 Localization 연동 가이드 (Unity)

게임에서 대사를 여러 언어로 표시하고 싶을 때, Dialogue System for Unity와 I2 Localization을 연동하면 효율적으로 다국어를 관리할 수 있다. 이 글에서는 DS → I2 → 번역 → 다시 DS로 적용하는 전체 워크플로우를 알려드리겠습니다.

1. 패키지 다운로드 및 설치

Unity 에셋 스토어에서 다음 패키지들을 설치가 필요하다:

1. Dialogue System for Unity

 

Dialogue System for Unity | 행동 AI | Unity Asset Store

Get the Dialogue System for Unity package from Pixel Crushers and speed up your game development process. Find this & other 행동 AI options on the Unity Asset Store.

assetstore.unity.com

 

2. I2 Localization

 

I2 Localization | 다국어 지원 | Unity Asset Store

Get the I2 Localization package from Inter Illusion and speed up your game development process. Find this & other 다국어 지원 options on the Unity Asset Store.

assetstore.unity.com

 


2. I2 Localization 연동 설정

01 LanguageSource를 만들어준다.

 

02 Google 버튼 클릭 → Install 버튼이 나타나면 클릭한다.

03 새 창에서 스프레드시트 선택 또는 새로 생성 후 연결한다.

04 연결되면 배포 → 웹에 게시를 클릭하여 모든 사용자 접근 허용으로 설정한다.

05 그리고 나오는 url을 입력하고 verify를 눌러 Google Sheet 연결 상태 확인한다.


3. DS to I2 툴 사용하기 (대사 데이터 연동)

준비 단계

01 Dialogue System의 Conversation Database(.asset)를 프로젝트에 준비해 둔다.

02 I2 Localization의 Localized String Table을 생성해 둔다.

 

변환 과정

01메뉴에서 Tools > Pixel Crushers > Localization > DS To I2 선택

02 Conversation Database 선택한다.

03 To I2 버튼 클릭한다. (Dialogue 데이터를 I2로 보냄)

04 I2의 Terms 탭에서 대사가 잘 등록되었는지 확인한다.

05 Languages 탭에서 지원할 언어 선택한다.

06 필요시 Translate All 클릭하여 자동 번역 적용한다.


4. I2에서 다시 Dialogue System으로 반영

01 DS To I2 창에서 Refresh 클릭한다.

02 From I2 버튼 클릭한다.

03 Replace 또는 Merge 선택하여 기존 대사와 병합 or 대체한다.


5. 런타임 언어 변경 스크립트 예시

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using I2.Loc;
using PixelCrushers.DialogueSystem;
using PixelCrushers.DialogueSystem.I2Support;

public class LanguageSwitch : MonoBehaviour
{
    private DialogueSystemUseI2Language i2LangSync;

    private void Start()
    {
        // DialogueManager에서 언어 연동 컴포넌트 찾기
        i2LangSync = FindObjectOfType<DialogueSystemUseI2Language>();
        if (i2LangSync == null)
        {
            Debug.LogWarning("DialogueSystemUseI2Language 컴포넌트를 찾을 수 없습니다!");
        }
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A)) SetLanguage("Korean");
        else if (Input.GetKeyDown(KeyCode.B)) SetLanguage("English");
        else if (Input.GetKeyDown(KeyCode.C)) SetLanguage("Spanish");
    }

    private void SetLanguage(string language)
    {
        LocalizationManager.CurrentLanguage = language;

        if (i2LangSync != null)
        {
            i2LangSync.UseCurrentI2Language(); // Dialogue System에 적용
        }

        Debug.Log($"언어 변경: {language}");
    }
}

전체 워크 플로우

flowchart LR
    A[Dialogue System 대사 입력] --> B[DS To I2 (To I2)]
    B --> C[I2 Localization 테이블로 등록]
    C --> D[번역 작업 or Google Sheet 연동]
    D --> E[DS To I2 (From I2)]
    E --> F[Dialogue System에 번역된 대사 반영]

 

반응형

댓글