직렬화(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)
결론
직렬화와 역직렬화는 데이터를 저장하고 불러오는 과정에서 중요한 역할을 한다.
'산대특 > 게임 알고리즘' 카테고리의 다른 글
울타리(fence)에 동물(animal)을 넣고 로그(Log)로 출력해보기 (0) | 2024.02.28 |
---|---|
메멘토 패턴(Memento Pattern) (0) | 2024.02.27 |
동기(Synchronous)와 비동기(Asynchronous) (0) | 2024.02.05 |
디자인 패턴 (0) | 2024.02.05 |
싱글톤 패턴 (0) | 2024.02.05 |