- 주제
>> 구글 스프레드시트 준비
>> 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 데이터를 처리하기 위해, 줄 단위로 데이터를 나누고 각 열을 키와 값으로 매칭한다. 이 과정은 정규 표현식을 사용하여 정확하게 처리한다. 이 부분은 다음 게시글에서 자세히 설명한다.
'유니티' 카테고리의 다른 글
Day 45 - WebGL 게임에서 동영상 파일 활용하기 (1부) (0) | 2024.12.07 |
---|---|
Day 44 - 구글 스프레드시트와 유니티 연동 및 다국어 데이터 관리 (2부) (2) | 2024.12.07 |
Day 42 - Object Pooling을 활용한 특정 위치 아이템 드랍 (2) | 2024.12.06 |
Day 41 - WebGL로 웹 새로고침 시 게임 상태 저장하기 (0) | 2024.12.05 |
Day 40 - 상태머신(3D 방치형 게임 만들기 中) (0) | 2024.06.18 |