벡터 정보는 바로 직렬화하여 저장할 수 없다. 그래서, 이번에는 벡터를 직렬화하여 저장하는 방법에 대해서 적어 보았다.
벡터는 구조체로 3가지의 실수(float) 값인 x, y, z를 가지고 있다. 하지만, 직렬화가 되지 않으므로 바로 저장이 불가능하다.
그래서, 아래와 같이 직렬화 가능한 벡터 구조체를 만들어 보았다.
[Serializable]
public struct SerializableVector3
{
public float x;
public float y;
public float z;
public SerializableVector3(Vector3 vector)
{
x = vector.x;
y = vector.y;
z = vector.z;
}
// Vector3로의 암시적 변환
public static implicit operator Vector3(SerializableVector3 vector)
{
return new Vector3(vector.x, vector.y, vector.z);
}
// SerializableVector3로의 암시적 변환
public static implicit operator SerializableVector3(Vector3 vector)
{
return new SerializableVector3(vector);
}
}
위와 같이, 직렬화 가능한 벡터 구조체를 통해 Json 파일로 저장이 가능해진다.
오늘은 벡터 구조체의 직렬화 방법에 대해서 알아보았다. 정말 간단하게 작성 가능하니, 모두 위치 정보를 저장할 때 위와 같이 사용해 보자.