Unity에서 Vector2 Serialize 를 사용하게 되면 아래와 같은 오류가 발생합니다.
SerializationException: Type 'UnityEngine.Vector2' in Assembly 'UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
아래와같은 Vector2S 와 같은 Class로 변경해주면 사용이 가능합니다.
Vector2 로 된 변수를 Vector2S 에 넣는 것이 가능하기 때문에 Serialize 하는 변수를 Vector2S 변경하고 Vector2 값을 Vector2S 로 복사 하게끔 구현해주면 됩니다.
[Serializable]public struct Vector2S{public float x;public float y;public Vector2S(float x, float y){this.x = x;this.y = y;}public override bool Equals(object obj){if (!(obj is Vector2S)){return false;}var s = (Vector2S)obj;return x == s.x &&y == s.y;}public Vector2 ToVector2(){return new Vector2(x, y);}public static bool operator ==(Vector2S a, Vector2S b){return (a.x == b.x) && (a.y == b.y);}public static bool operator !=(Vector2S a, Vector2S b){return (a.x != b.x) || (a.y != b.y);}public static implicit operator Vector2(Vector2S x){return new Vector2(x.x, x.y);}public static implicit operator Vector2S(Vector2 x){return new Vector2S(x.x, x.y);}}
댓글 없음:
댓글 쓰기