만약 Vector3을 시트에 입력하고 싶다면 어떻게 해야할까요? 아주 단순합니다. 다음과 같이 정의해보세요! (Vector3은 이미 UGS에서 지원하므로 별도로 추가 할 필요가 없긴 합니다.)
using UnityEngine;
namespace Hamster.ZG.Type
{
[Type(typeof(Vector3), new string[] { "vector3", "Vector3", "vec3" })]
public class Vector3Type : IType
{
public object DefaultValue => Vector3.zero;
/// <summary>
/// value는 스프레드 시트에 적혀있는 값
/// </summary>
public object Read(string value)
{
// value : [1,2,3]
var values = ReadUtil.GetBracketValueToArray(value);
float x = float.Parse(values[0]);
float y = float.Parse(values[1]);
float z = float.Parse(values[2]);
return new Vector3(x,y,z);
}
/// <summary>
/// value write to google sheet
/// </summary>
public string Write(object value)
{
Vector3 v = (Vector3)value;
return $"[{v.x},{v.y},{v.z}]";
}
}
}
작성을하고 파일을 저장하면 UGS 자동으로 타입을 인식합니다. 이제 시트를 다음과 같이 수정해봅시다.
이후, 데이터를 불러와봅시다.
using UnityEngine;
public class test : MonoBehaviour
{
void Start()
{
Cube.Data.Load();
foreach(var data in Cube.Data.DataList)
{
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.position = data.position;
}
}
}