【Unity】DateTime型な変数をJson.Utilityでシリアライズする方法

Unity

はじめに

こんにちは、バッテラです。

Json.UtitilyでDateTime型の変数を保存しようとしてもなぜかできませんでした。

調べた結果 DateTime がシリアライズすることができないということが分かりました。

なんとか日付を保存する方法はないかと模索したところ、

DateTimeが持つToBinaryとFromBinary を使うことで保存・復元できたので、

その方法について共有したいと思います。

環境

  • MacOS BigSur (11.4)
  • Unity (2020.3.14f1)

DateTime型をToBinaryで変換

DateTime型の変数は保存できないので、 代わりにlong型の変数を用意します。

long型の変数に対して、DateTime型変数をToBinaryで変換したものをセットします。

long binValue = DateTime.Now.ToBinary();

long型であればシリアライズ可能でした。

long型をFormBinaryで復元

次は復元です。

json文字列からデシリアライズした段階ではまだlong型の変数であるため、

このlong型の変数から FromBinary でDateTime型に変換して戻します。

 DateTime date = DateTime.FromBinary(binValue);

おわりに

今回はDateTimeをシリアライズする方法でしたー。

それでは、また。

読者登録・Twitterのフォローをしていただけると、ハッピーになります。