본문 바로가기
유니티 공부/Unity

Unity - [SerializeField],직렬화, [System.Serializable]

by 코딩하는 돼징 2023. 6. 14.
반응형

1. [SerializeField]

Unity의 Attribute중 하나로 해당 필드를 Inspector창에서 직렬화되도록 지정한다. 그러므로 해당 필드의 값을 인스펙터창에서 수정할 수 있고, 프리팹 또는 씬에 저장될때 유지된다.

[SerializeField]
private int example;

private로 설정되어있지만 inspector창에서 수정하고 싶은 경우 [SerializeField]를 사용하면 된다. private의 특징은 유지된다.


2. 직렬화

객체의 상태를 저장하거나 전송하기 위한 과정

일반적으로 객체의 메모리 상태는 해당 객체가 실행 중인 동안에만 유지된다. 프로그램이 종료되면 객체 상태는 사라지게 된다. 하지만 직렬화를 사용하면 객체는 메모리에서 상태를 보존하지 않고도 파일에 저장하거나 네트워크를 전송할 수 있다.

 

스크립트의 필드가 직렬화되도록 하는 방법은 public이거나 SerializedField 속성이 있어야 하고static,const,readonly가 아니어야 하고 fieldtype은 직렬화 할 수 있는 타입이어야 한다.


3. [System.Serializable]

Unity의 Attribute중 하나로 이 Attribute를 class나 struct 위에 선언하게 되면 해당 타입이 직렬화 가능한 형태가 된다. 직렬화 가능한 class나 struct로 만들어진 객체는 상태(State)를 저장하고 복원할 수 있다. 이를 이용해서 게임을 종료 한 후에도 이전 상태를 보존할 수 있다.

[System.Serializable]
public struct SaveState
{
    public int playerID;
    public string playerName;
    
    public PlayerData(int ID, string name)
    {
        playerID = ID;
        playerName = name;
    }
}

 

반응형

댓글