本日は HoloLens の技術調査枠です。
前回、HoloLens での設定ファイル読み込みについて調査を行いました。
今回は書き込み動作について確認を行います。
bluebirdofoz.hatenablog.com
前回作成したスクリプトに以下のファイル書き込み処理を追加します。
・AppSettingManager.cs
<summary>
</summary>
<returns></returns>
public bool XMLWrite()
{
Debug.Log("XMLWrite");
bool ret = false;
System.Xml.Serialization.XmlSerializer serializer;
serializer = new System.Xml.Serialization.XmlSerializer(typeof(AppSettings));
if (System.IO.Directory.Exists(SettingFileDirectoryPath()) == true)
{
System.IO.StreamWriter streamwriter;
#if WINDOWS_UWP
streamwriter = new System.IO.StreamWriter((System.IO.Stream)System.IO.File.OpenWrite(XMLFilePath()));
#else
streamwriter = new System.IO.StreamWriter(XMLFilePath(), false, new System.Text.UTF8Encoding(false));
#endif
serializer.Serialize(streamwriter, p_AppSettings);
#if WINDOWS_UWP
streamwriter.Dispose();
#else
streamwriter.Close();
#endif
ret = true;
}
return ret;
}
確認用にアプリの起動回数を記述するタグと表示を追加します。
・AppSettingManager.cs
<summary>
</summary>
public class AppSettings
{
<summary>
</summary>
public int ExecuteCount;
<summary>
</summary>
public string Message;
}
前回作成した処理部分に、起動と同時にカウンタを読み込み、インクリメントして書き出す処理を追加します。
・PanelTextController
<summary>
</summary>
public GameObject CountTextObject;
<summary>
</summary>
private UnityEngine.UI.Text p_CountText;
<summary>
</summary>
void Start ()
{
p_CountText = CountTextObject.GetComponent<UnityEngine.UI.Text>();
p_MessageText = MessageTextObject.GetComponent<UnityEngine.UI.Text>();
p_AppSettingManager = AppSettingsObject.GetComponent<AppSettingManager>();
p_MessageText.text = p_AppSettingManager.GetAppSettings().Message;
p_AppSettingManager.GetAppSettings().ExecuteCount++;
p_CountText.text = "EXE_COUNT : " + p_AppSettingManager.GetAppSettings().ExecuteCount;
p_AppSettingManager.XMLWrite();
}
最後にスクリプトにテキストオブジェクトの参照を渡し、 Assets/StreamingAssets ディレクトリに以下のXMLファイルを配置します。
・settings.xml
<?xml version="1.0" encoding="utf-8"?>
<AppSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ExecuteCount>0</ExecuteCount>
<Message>Hello World</Message>
</AppSettings>
アプリを起動すると、カウントが表示されます。
この後、settings.xml を確認してみると……。
・settings.xml
<?xml version="1.0" encoding="utf-8"?>
<AppSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ExecuteCount>1</ExecuteCount>
<Message>Hello World</Message>
</AppSettings>
起動回数「1」が書き込まれていました。成功です。
続けて HoloLens 上での動作についても確認します。
試しに、起動・停止を繰り返すと3回目の起動時には……。
起動カウントが「3」回になっています。成功しました。
設定ファイルの他、アプリの状態保持にも使えそうです。