유니티/기타

[Unity] 구글 시트 연동하는법

이름?없음 2023. 10. 29. 22:13
반응형

유니티를 구글 시트와 연동시키는 법을 알아보도록 하겠습니다

먼저 구글시트 하나를 만든 후 공유설정을 링크가 있는 모든 사용자로 바꾸어 주세요

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