부트캠프/Unity [ 스파르타 ]

[TIL] 유니티 스파르타 7기 13일차 - 직렬화와 역직렬화

맏난거 2025. 2. 7. 20:58

 

오늘 팀프로젝트 RPG를 하면서

데이터 불러오기, 저장하기, 삭제하기

부분을  팀원분께서 맡았는데 직렬화와 역직렬화 말씀하시길레

무슨 뜻인지 몰라서 검색하면서 찾아가봤다.

 

데이터 직렬화 (Serialization)

데이터 직렬화는 객체나 데이터를 특정 포맷(예: JSON, XML, 바이너리 등)으로 변환하여 저장하거나 네트워크를 통해 전송할 수 있도록 하는 과정입니다. 주로 시스템 간 데이터 전송, 파일 저장, 또는 데이터베이스에 데이터를 저장할 때 사용됩니다. 직렬화된 데이터는 사람이 읽기 어려운 형태일 수 있으며, 이를 통해 데이터의 크기를 줄이거나 전송 효율을 높일 수 있습니다.

주요 용도:

  1. 데이터 전송: 네트워크를 통해 다른 시스템으로 데이터를 전송할 때 사용.
  2. 파일 저장: 데이터를 파일 시스템에 저장하여, 필요할 때 다시 읽을 수 있도록 할 때 사용.
  3. 세션 관리: 웹 애플리케이션에서 사용자 세션을 관리할 때 직렬화가 필요.

데이터 역직렬화 (Deserialization)

역직렬화는 직렬화된 데이터를 원래의 객체나 데이터 형식으로 되돌리는 과정입니다. 이는 주로 네트워크에서 받은 데이터나 저장된 파일에서 데이터를 읽을 때 발생합니다. 역직렬화된 데이터는 프로그래밍 언어에서 사용할 수 있는 객체 형태로 복원됩니다.

역직렬화의 주된 목적은 직렬화된 데이터를 다시 원래의 형식으로 복원하여 프로그램 내에서 사용할 수 있게 하는 것입니다.

참고사항

  • 직렬화와 역직렬화는 데이터를 저장하거나 전송하는 데 중요한 역할을 하지만, 데이터의 보안에도 신경을 써야 합니다. 악의적인 사용자가 잘못된 데이터를 역직렬화하는 경우 보안 취약점이 발생할 수 있기 때문에 이를 방지하기 위한 추가적인 안전장치가 필요합니다.
  • 직렬화된 데이터는 플랫폼에 종속적일 수 있기 때문에, 이를 표준화된 형식으로 처리할 때는 각 플랫폼 간 호환성에 유의해야 합니다.

 

직렬화는 내가 작성하고있는 코드를 json이나 xml로 바꿔서 변환해주는 작업이다.

역직렬화는 json이나 xml에서 바이트형태로 바꿔주는 작업이다.

 

VisualStudio에서는 객체를 직렬화시켜주는 간편한 메서드가 있어서 저장 및 불러오기 작업이 수월했다.

데이터 삭제는 플레이어 이름을 null 값을 줘서 데이터를 저장하고 데이터배열을 다시 불러와 데이터를 없는 취급으로 만들어줬다. ( 플레이어의 이름에 따라서 데이터가 있는지 없는지 판단해주는 메서드를 만들었다. )