본문 바로가기
유니티

Day 43 - 구글 스프레드시트와 유니티 연동 및 다국어 데이터 관리 (1부)

by shin0707 2024. 12. 6.
728x90

  • 주제

>>  구글 스프레드시트 준비

>>  LocalizingManager 클래스 소개
>>  LocalizingManager 클래스 구현 (1/2)

>>  언어 설정 Enum
>>  CSV 데이터 처리


  • 공부내용

유니티 프로젝트에서 다양한 언어를 지원하려면 다국어 데이터를 효율적으로 관리하는 것이 중요하다.

이를 위해 구글 스프레드시트를 활용하면, 번역된 텍스트 데이터를 손쉽게 수정하고 관리할 수 있다.

이번 게시글에서는 유니티와 구글 스프레드시트를 연동하여 다국어 데이터를 가져오는 방법을 알아본다.

1. 구글 스프레드시트 준비


1-1. 스프레드시트 생성

아래와 같은 형식으로 스프레드시트를 작성한다.
첫 번째 열은 Key, 나머지 열은 언어별 번역 데이터를 입력한다.

Key English Korean Japanese
Hello Hello 안녕하세요 こんにちは
Welcome Welcome 환영합니다 ようこそ

 

1-2. 공유 설정

 

  • 스프레드시트 오른쪽 상단의 공유 버튼을 클릭한다.
  • 링크가 있는 모든 사용자에게 보기 권한을 설정한다.

1-3. CSV 링크 생성

  • URL 형식:
https://docs.google.com/spreadsheets/d/{스프레드시트ID}/gviz/tq?tqx=out:csv&sheet={시트이름}
  • 예제:
https://docs.google.com/spreadsheets/d/8fg7VhRKyJXXOZUHw12PoeyTdcA4utQohV0ZYkaYd-sY/gviz/tq?tqx=out:csv&sheet=Localizing

 


2. LocalizingManager 클래스 소개

 

LocalizingManager는 구글 스프레드시트에서 텍스트 데이터를 가져와 Dictionary에 저장하고,

이를 게임 내에서 사용하는 클래스다.

 

  • 구글 스프레드시트에서 데이터 로드: UnityWebRequest를 사용하여 CSV 데이터를 가져온다.
  • 다국어 데이터 관리: 각 언어에 따라 데이터를 저장하고 검색할 수 있다.
  • UI 연동: 텍스트 데이터를 UI 요소에 적용한다.

3. LocalizingManager 클래스 구현 (1/2)

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

public class LocalizingManager : MonoBehaviour
{
    [Header("데이터 로드 확인")]
    public bool IsLocalized; // 데이터 로드 상태

    [Header("언어 설정")]
    public ELanguage ELanguage; // 언어 선택

    private Dictionary<string, string> localizedText; // 로컬라이징 데이터 저장
    private string url; // 구글 스프레드시트 URL

    private static LocalizingManager _instance;
    public static LocalizingManager Instance => 
        _instance ?? throw new InvalidOperationException("LocalizingManager 인스턴스가 존재하지 않습니다.");

    #region 싱글톤(Awake)
    private void Awake()
    {
        if (_instance == null) _instance = this;
    }
    #endregion

    private void Start()
    {
        url = "https://docs.google.com/spreadsheets/d/8fg7VhRKyJXXOZUHw12PoeyTdcA4utQohV0ZYkaYd-sY/gviz/tq?tqx=out:csv&sheet=Localizing";
        IsLocalized = false;
        LoadText(ELanguage); // 선택된 언어로 데이터 로드
    }

    // 데이터 로드 메서드
    public void LoadText(ELanguage ELanguage)
    {
        StartCoroutine(LoadLocalizedTextCoroutine(url, ELanguage));
    }
}

 

4. 언어 설정 Enum

ELanguage는 게임 내에서 언어를 선택하기 위해 사용하는 열거형(Enum)이다.

프로젝트에 맞게 언어를 추가하면 된다.

public enum ELanguage
{
    English = 1,
    Korean = 2,
    Japanese = 3
}

5. CSV 데이터 처리
구글 스프레드시트에서 가져온 CSV 데이터를 처리하기 위해, 줄 단위로 데이터를 나누고 각 열을 키와 값으로 매칭한다. 이 과정은 정규 표현식을 사용하여 정확하게 처리한다. 이 부분은 다음 게시글에서 자세히 설명한다.

 

 

728x90
반응형