MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens2でホロモンアプリを作る その91(ホロモンの状態をファイル保存する)

本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
f:id:bluebirdofoz:20220108225230j:plain

今回はホロモンの状態をファイル保存するメモです。

オブジェクトのXMLドキュメントへのシリアル化と書き出し

オブジェクトのXMLドキュメントへのシリアル化と書き出しを使ってホロモンの状態を保存します。
docs.microsoft.com

XMLドキュメントへのシリアル化の詳細は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

ホロモンのコンディション情報をシリアル化を使ってファイルへの書き出しと読み込みを行います。

実装コード

以下のようなデータクラスと、ファイル書き出しと読み込みを行うクラスを実装しました。

データ保存を行うラッパークラスを作成してシーンに設定します。
f:id:bluebirdofoz:20220108225300j:plain

動作確認

シーンを再生してファイル保存を実行してみました。
以下の通り、xml ファイルが出力されます。
f:id:bluebirdofoz:20220108225309j:plain

内容を確認してみます。
以下の通り、HoloMonSaveData クラスで保持していた情報が XML ドキュメントに変換されて出力されています。

<?xml version="1.0" encoding="utf-8"?>
<HoloMonSaveData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SavedDataTime>
    <Value>2022-01-08T14:43:20.5614211+09:00</Value>
  </SavedDataTime>
  <SavedPackageVersion>
    <Major>0</Major>
    <Minor>0</Minor>
    <Build>0</Build>
    <Revision>0</Revision>
  </SavedPackageVersion>
  <AppName>TestApp</AppName>
  <BodyStatus>
    <Initialized>true</Initialized>
    <BirthTime>
      <LastUpdateDateTime>2022-01-08T14:41:25.1222331+09:00</LastUpdateDateTime>
      <Value>2022-01-08T14:41:25.1222331+09:00</Value>
    </BirthTime>
    <AgeOfDay>
      <LastUpdateDateTime>0001-01-01T00:00:00</LastUpdateDateTime>
      <Value>0</Value>
    </AgeOfDay>
    <BodyHeight>
      <LastUpdateDateTime>2022-01-08T14:41:54.4948806+09:00</LastUpdateDateTime>
      <Value>0.42</Value>
    </BodyHeight>
    <DefaultBodyHeight>
      <LastUpdateDateTime>2022-01-08T14:41:25.12323+09:00</LastUpdateDateTime>
      <Value>0.4</Value>
    </DefaultBodyHeight>
    <BodyPower>
      <LastUpdateDateTime>2022-01-08T14:41:55.116408+09:00</LastUpdateDateTime>
      <Value>0.02</Value>
    </BodyPower>
  </BodyStatus>
  <LifeStatus>
    <Initialized>true</Initialized>
    <HungryPercent>
      <LastUpdateDateTime>2022-01-08T14:41:55.116408+09:00</LastUpdateDateTime>
      <Value>70</Value>
    </HungryPercent>
    <HumorPercent>
      <LastUpdateDateTime>2022-01-08T14:41:25.1152605+09:00</LastUpdateDateTime>
      <Value>50</Value>
    </HumorPercent>
    <StaminaPercent>
      <LastUpdateDateTime>2022-01-08T14:41:25.1152605+09:00</LastUpdateDateTime>
      <Value>50</Value>
    </StaminaPercent>
    <PoopPercent>
      <LastUpdateDateTime>2022-01-08T14:41:25.1152605+09:00</LastUpdateDateTime>
      <Value>99</Value>
    </PoopPercent>
    <SleepinessLevel>
      <LastUpdateDateTime>0001-01-01T00:00:00</LastUpdateDateTime>
      <Value>Nothing</Value>
    </SleepinessLevel>
  </LifeStatus>
</HoloMonSaveData>