- 주제
>> 데이터 업데이트를 위한 Google Apps Script 확장
>> Unity에서 데이터 전송 구현
>> 데이터 수정과 업데이트 UI 예제
>> 데이터 수정과 업데이트 테스트
>> 데이터 업데이트 후 처리
- 공부내용
이전 글에서는 Unity에서 구글 시트 데이터를 불러오는 방법을 알아봤다. 이번에는 Unity에서 데이터를 수정하고, 이를 구글 시트에 다시 업데이트하는 방법을 살펴보자.
구글 시트로 데이터를 전송하는 방식과 이를 통해 게임 데이터를 동적으로 관리하는 과정을 중점적으로 다룬다.
1. 데이터 업데이트를 위한 Google Apps Script 확장
구글 시트에 데이터를 업데이트하려면 Google Apps Script에서 새로운 기능을 추가해야 한다.
아래는 데이터를 수정할 수 있는 스크립트 코드다:
function doGet(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
const action = e.parameter.action;
if (action === 'update') {
const name = e.parameter.name;
const score = e.parameter.score;
let updated = false;
const rows = sheet.getDataRange().getValues();
// 기존 데이터 업데이트
for (let i = 0; i < rows.length; i++) {
if (rows[i][0] === name) {
sheet.getRange(i + 1, 2).setValue(score);
updated = true;
break;
}
}
// 새로운 데이터 추가
if (!updated) {
sheet.appendRow([name, score]);
}
return ContentService.createTextOutput('success');
}
return ContentService.createTextOutput('invalid request');
}
2. Unity에서 데이터 전송 구현
Unity에서는 UnityWebRequest를 사용해 구글 시트로 데이터를 보낼 수 있다.
아래는 Unity에서 데이터를 업데이트하는 예제 코드다:
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class GoogleSheetUpdater : MonoBehaviour
{
private string sheetUrl = "https://script.google.com/macros/s/your-deployed-url/exec";
public void UpdateSheetData(string name, int score)
{
StartCoroutine(UpdateDataCoroutine(name, score));
}
private IEnumerator UpdateDataCoroutine(string name, int score)
{
string updateUrl = $"{sheetUrl}?action=update&name={UnityWebRequest.EscapeURL(name)}&score={score}";
UnityWebRequest request = UnityWebRequest.Get(updateUrl);
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success)
{
Debug.Log($"Data Updated: {request.downloadHandler.text}");
}
else
{
Debug.LogError($"Failed to update data: {request.error}");
}
}
}
3. 데이터 수정과 업데이트 UI 예제
Unity에서 데이터를 수정하기 위해 간단한 UI를 구현할 수 있다.
아래는 사용자 입력을 받아 데이터를 업데이트하는 코드다:
using TMPro;
using UnityEngine;
public class UIUpdater : MonoBehaviour
{
public TMP_InputField nameInputField;
public TMP_InputField scoreInputField;
private GoogleSheetUpdater sheetUpdater;
private void Start()
{
sheetUpdater = FindObjectOfType<GoogleSheetUpdater>();
}
public void OnUpdateButtonClicked()
{
string name = nameInputField.text;
int score;
if (int.TryParse(scoreInputField.text, out score))
{
sheetUpdater.UpdateSheetData(name, score);
}
else
{
Debug.LogError("Invalid score input");
}
}
}
4. 데이터 수정과 업데이트 테스트
- UI 연결
- TMP_InputField를 Unity 씬에 추가하고 nameInputField와 scoreInputField에 연결.
- 버튼을 추가해 OnUpdateButtonClicked()를 호출하도록 설정.
- 테스트 시나리오
- 이름과 점수를 입력한 후 버튼을 눌러 데이터 업데이트.
- 구글 시트를 열어 데이터가 업데이트되었는지 확인.
5. 데이터 업데이트 후 처리
Unity에서 데이터를 업데이트한 후, 다른 사용자가 이를 확인할 수 있도록 데이터 동기화를 수행할 수 있다. 아래는 데이터를 다시 로드하는 코드 예제다:
public class GoogleSheetSynchronizer : MonoBehaviour
{
private GoogleSheetLoader sheetLoader;
private void Start()
{
sheetLoader = FindObjectOfType<GoogleSheetLoader>();
}
public void SyncData()
{
sheetLoader.LoadDataFromSheet();
}
}
이번 글에서는 Unity에서 구글 시트 데이터를 수정하고 업데이트하는 방법을 알아봤다.
다음 글에서는 데이터 동기화와 효율적인 데이터 관리 전략을 다룰 예정이다.
'🌐 유니티 (Unity)' 카테고리의 다른 글
Day 57 - Unity와 구글 시트 연동 유지 관리 (0) | 2024.12.13 |
---|---|
Day 56 - Unity와 구글 시트 데이터 동기화 전략 (4) | 2024.12.13 |
Day 54 - Unity로 구글 시트 데이터 불러오기 (2) | 2024.12.12 |
Day 53 - 구글 시트와 Unity 연동하기(구글 시트 API 사용 준비) (2) | 2024.12.11 |
Day 52 - 멀티플레이 서버 리소스 관리 전략 (2) | 2024.12.11 |