[Unity][C#] XMLファイルとしてデータを保存する

ゲームで使用しているオブジェクトのデータをファイルに保存する方法のメモ書きです。

ファイルに保存する方法はいろいろありますが、C#に備わっているシリアライズ/デシリアライズの機能を用いると便利です。
.NET FrameworkにてXMLとしてシリアライズ/デシリアライズできるXmlSerializerクラスが用意されています。
今回はこれを用いてゲームデータの保存・読み出しを行ってみたいと思います。

シリアライズ/デシリアライズ

XmlSerializerを用いてシリアライズ/デシリアライズする処理は以下のようになります。

XmlSerializerはnewでインスタンス化することで使えるようになります。

XMLへのシリアライズはXmlSerializer.Serialize()により行います。

第1引数にシリアライズされたXMLデータを出力するストリーム、第2引数にシリアライズするデータを指定します。
ここで、dataのデータ型はシリアライズ可能な型でなければなりません。
構造体やArray、Listなどはシリアライズできますが、Dictionaryはシリアライズできません。

デシリアライズはXmlSerializer.Deserialize()により行います。

引数にはシリアライズされたXMLデータを受け取るストリームを指定します。
このメソッドを実行するとデシリアライズされたデータが返却されます。

使ってみる

実際にXMLにゲームデータを保存してみましょう。
構造体変数のデータをシリアライズ/デシリアライズする処理は以下のようになります。

Sキーでシリアライズ、Dキーでデシリアライズします。
シリアライズしたデータを開いてみると、以下のようにきちんとXML形式でデータが保存されていることが確認できます。

あらゆる型の変数に対応しているため、簡単なファイル保存用途にはこの方法で十分対応できるでしょう。

LEAVE A REPLY

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.