최종 프로젝트를 진행하면서 느낀 것이 하나 있다.
DB를 관리하면서 너무 불편했던 경험이 있다.
GitHub를 이용해서 데이터 관리를 하니 데이터가 변경 되었을때 해당 작업자가 상위 브런치에 Merge를 해야만
변경된 데이터를 확인할수가 있어서 너무 불편했었다.
해당 프로젝트에서는 메인 기획자라고 할 사람이 없었지만 , 내가 회사에 취직했을때는 기획자가 데이터 값을 변동만하면 바로 적용 하게 해야할 필요를 느꼇다.
구글 스프레드 시트를 이용하여 온라인으로 외부 데이터를 읽어오는 방식이다.
현재 방법은 구글 스프레드 시트 API를 이용하지 않는 방법으로 간단한 프로젝트를 구성할때 좋은 방식이다.
구글 스프레드시트에 데이터를 기입하고 [공유] 버튼을 눌러 링크를 활성화 하자.
이렇게 가져온 링크를 밑에 스크립트 코드에 붙여 넣는다.
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
//복사해온 URL : URL주소
//1.복사해 온 주소에서 끝에 있는 "edit?usp=sharing" 삭제한다.
//2.삭제 한 주소에 다음을 추가한다 "export?format=tsv&range=A2:E";
//2-1. 설명 : 모드와 포맷 그리고 시트의 범위를 뜻함, =A2:E 를 엑셀 연산식에 적용시 범위를 알수 있음
//사용할 URL : URL주소 + export?format=tsv&range=A2:E
public class GoogleSheetDBLoader : MonoBehaviour
{
private string sheetData; // URL에서 불러온 데이터를 저장하는 변수
private readonly string googleSheetURL = "사용할 URL";
public string SheetData { get => sheetData; set => sheetData = value; }
IEnumerator Start()
{
//UnityWebRequest 인스턴스 리소스 해제를 위한 using
using(UnityWebRequest www = UnityWebRequest.Get(googleSheetURL))
{
yield return www.SendWebRequest();
if(www.isDone)
{
sheetData = www.downloadHandler.text;
}
}
DisplayText();
}
public void DisplayText()
{
//Split 함수로 데이터 처리하기
string[] rows = sheetData.Split('\n'); //행 데이터 (카드의 데이터 모음)
string str = "";
for (int j = 0; j < rows.Length; j++)
{
string[] columns = rows[j].Split('\t'); // 열 데이터 (카드의 데이터 중 하나)
//첫번째 행의 카드 데이터를 출력한다.
for (int i = 0; i < columns.Length; i++)
{
str += columns[i] + " ";
}
str += "\n";
}
Debug.Log(str);
}
}
이렇게하면 해당 스크립트에 범위에 표시된 데이터를 다 문자열로 파싱해온다.
범위는 추가되는 URL의 ( A2:E ) 이 부분을 수정해서 사용하면된다.
물론 이 코드는 확장성에서 많이 떨어지는 부분이 있기에 나중에 프로젝트가 커지면 API를 사용하는게 더 효율적일것이다.
해당 기능을 이용하여 나중에 게임에 DB를 구성하여 사용 할수 있을것이다.
'내일배움캠프_Unity_6기 > TIL(Today I Learend)' 카테고리의 다른 글
TIL : 2025-02-07(금) :: 카드게임 - 카드 오브젝트 마우스 클릭 이동 임시 구현 (RaycastHit2D , ScreenToWorldPoint) (0) | 2025.02.07 |
---|---|
TIL : 2025-01-24(금) :: 슬라임타워디펜스 프로젝트의 누락된 트러블슈팅 기록( 타워 이동시 기존에 있던 타일 데이터가 초기화 되지 않는 이슈 ) (0) | 2025.01.24 |
TIL : 2024-12-27(금) :: 모의면접준비 (0) | 2024.12.27 |
TIL : 2024-12-20(금) :: 모의면접 자기소개 및 질문 준비 (0) | 2024.12.20 |
TIL : 2024-11-22(금) :: Unity 3D 모바일 타워디펜스게임 팀프로젝트 개발 - 심화프로젝트에 대한 회고 (0) | 2024.11.22 |