유니티 [System.Serializable]에 대해 알아보자

[System.Serializable]이란?

C#의 속성(attribute)으로, 클래스, 구조체 또는 필드에 적용할 수 있습니다. System.Serializable 속성을 사용하면 직렬화 시스템에 의해 데이터가 직렬화될 수 있음을 나타냅니다.

 

직렬화는 데이터 구조나 객체 상태가 에디터에 저장되고 나중에 재구성할 수 있는 포맷으로 자동으로 변환하는 프로세스를 뜻합니다.

 

직렬화?🔽

더보기

직렬화는 데이터를 저장하거나 전송하기 위해 일련의 연속적인 바이트로 변환하는 과정을 말합니다. 연속적인 바이트로 변환시키면 복잡한 데이터 구조를 쉽게 저장하고 전송할 수 있습니다. 직렬화된 데이터는 나중에 역직렬화를 통해 원래의 형태로 복원할 수 있습니다.


예를 들어, 우리가 게임을 만들고 있고 플레이어의 정보, 아이템, 몬스터 등 여러 종류의 데이터가 있습니다. 게임을 종료하고 나중에 다시 시작할 때 이전의 상태를 유지하려면, 이 데이터를 어딘가에 저장해야 합니다. 이때 직렬화가 사용하여 파일이나 데이터베이스에 저장할 수 있습니다. 그런 다음, 게임을 다시 시작할 때 이 데이터를 불러와 역직렬화하여 원래의 상태를 복원할 수 있습니다.


예제

using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class ItemElement
{
    public SpriteRenderer ItemSpriteRenderer;
    public string Name;
    public string Type; 
    public string Description;
    public int Count;
    public int Index;
}

public class ItemElementContainer : MonoBehaviour
{
    public List<ItemElement> ItemElementList = new List<ItemElement>();
}

[System.Serializable]


직렬화를 해줌으로 인스펙터에서 직접 데이터를 수정할 수 있게 되었습니다.