직렬화(Serialization)

 

직렬화는 객체의 상태를 바이트 스트림이나 데이터의 문자열 표현과 같은 저장이 가능한 형태로 변환하는 과정이다.

유니티에서는 이러한 과정을 통해 복잡한 데이터 구조를 파일이나 메모리에 저장(Save)할 수 있다.

 

유니티는 기본적으로 public 변수나 [SerializeField] 어트리뷰트가 붙은 private 변수를 자동으로 직렬화한다.

이러한 프로세스는 개발자가 명시적으로 별도의 직렬화 코드를 작성하지 않아도 유니티 엔진이 자동으로 처리해준다.

 

 

역직렬화(Deserialization)

역직렬화는 직렬화된 데이터를 다시 원래의 객체 상태로 복원하는 과정이다.

 

유니티에서는 이 과정을 통해 파일 시스템에 저장된 데이터를 읽어와 게임 오브젝트의 상태를 복원하거나, 게임 설정을 불러와 적용(Load)한다.

 

 

 

 

 

<예시>

[System.Serializable]
public class PlayerState
{
    public Vector3 position;
    public int health;
    public int gold;

    public PlayerState(Vector3 position, int health, int gold)
    {
        this.position = position;
        this.health = health;
        this.gold = gold;
    }
}

 

위 클래스를 통해 직렬화/ 역직렬화를 한다면?

 

PlayerState playerState = new PlayerState(new Vector3(0, 0, 0), 100, 50);
string json = JsonUtility.ToJson(playerState);

직렬화(Serialization)

 

PlayerState loadedPlayerState = JsonUtility.FromJson<PlayerState>(json);

역직렬화(Deserialization)

 

 

결론

직렬화와 역직렬화는 데이터를 저장하고 불러오는 과정에서 중요한 역할을 한다.

+ Recent posts