반응형
유니티를 구글 시트와 연동시키는 법을 알아보도록 하겠습니다
먼저 구글시트 하나를 만든 후 공유설정을 링크가 있는 모든 사용자로 바꾸어 주세요
Sheet에 쓰인 데이터를 받아오기 위해서는 2가지 값이 필요합니다
documentID와 gid입니다 자신의 Sheet링크를 보면 2가지 값을 알 수 있습니다
왼쪽이 documentID 오른쪽이 gid입니다
이제 유니티와 연동하여 보겠습니다
반응형
GoogleSheet 클래스
public static class GoogleSheet
{
public static void GetSheetData(string documentID, string sheetID, object onwer,Action<bool, string> process = null)
{
EditorCoroutineUtility.StartCoroutine(GetSheetDataCo(documentID, sheetID, process), onwer);
}
private static IEnumerator GetSheetDataCo(string documentID, string sheetID, Action<bool, string> process = null)
{
string url = $"https://docs.google.com/spreadsheets/d/{documentID}/export?format=tsv&gid={sheetID}";
UnityWebRequest req = UnityWebRequest.Get(url);
yield return req.SendWebRequest();
if (req.result == UnityWebRequest.Result.ConnectionError || req.responseCode != 200)
{
process?.Invoke(false, null);
yield break;
}
process?.Invoke(true, req.downloadHandler.text);
}
}
여러 Editor에서 사용을 고려하여 static클래스로 작성하였습니다
EditorCoroutineUtility를 이용하면 에디터에서도 코루틴을 사용할 수 있습니다
EditorCoroutineUtility를 사용할 수 없다면 Package Manager에서 EditorCoroutine을 다운로드해 주세요
UnityWebRequest.SendWebRequest()를 사용하여 sheet의 데이터를 받아옵니다
제 경우 tsv 형식으로 받아 왔습니다
이후 성공여부 검사 후 process액션을 실행하여 줍니다
이것을 이용하여 Sheet데이터가 로그에 찍히는 코드를 작성해 보았습니다
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
public class SheetViewer : EditorWindow
{
[MenuItem("MyEditor/GoogleSheet")]
public static void OpenPanel()
{
var window = CreateWindow<SheetViewer>();
window.Show();
}
private void OnEnable()
{
TextField documentIDField = new TextField("documentID");
TextField gidField = new TextField("gid");
Button getBtn = new Button(() =>
{
GoogleSheet.GetSheetData(documentIDField.value, gidField.value, this, (b, s) =>
{
if (b)
{
Debug.Log(s);
}
else
{
Debug.Log("실패");
}
});
});
getBtn.style.height = new StyleLength(30);
rootVisualElement.Add(documentIDField);
rootVisualElement.Add(gidField);
rootVisualElement.Add(getBtn);
}
}
documentID와 gid를 입력하면 시트의 데이터가 로그로 찍힙니다
이제 이것을 응용하여 게임에서 쉽게 값 관리를 할 수 있습니다
반응형
'유니티 > 기타' 카테고리의 다른 글
[Unity] Mathf.InverseLerp (0) | 2024.02.11 |
---|---|
[Unity] Lerp함수 (0) | 2024.02.11 |
[Unity] Visual Studio에서 유니티용 DLL만드는법 (0) | 2024.02.08 |