本日は HoloLens の小ネタ枠です。
スクリプトからHoloLensの3Dオブジェクトフォルダにアクセスする手順を記事にします。
3Dオブジェクトフォルダへのアクセス
スクリプトからHoloLensの3Dオブジェクトフォルダにアクセスするには KnownFolders Class を使います。
docs.microsoft.com
docs.microsoft.com
サンプルスクリプト
テキストファイルの文字列を読み込んで表示するサンプルシーンを作成しました。
以下のようにUnity上では SteamingAssets を参照するスクリプトを利用します。
・GetObject3DPath.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GetObject3DPath : MonoBehaviour { /// <summary> /// 3Dオブジェクトフォルダ配下のファイルパスを取得する /// (%USERPROFILE%\3D Objects) /// </summary> static public string GetFilePath(string filename) { return System.IO.Path.Combine(GetFolderPath(), filename); } /// <summary> /// 3Dオブジェクトフォルダのパスを取得する /// (%USERPROFILE%\3D Objects) /// </summary> static public string GetFolderPath() { string directorypath = ""; #if WINDOWS_UWP // HoloLens上での動作の場合、3D Objectsフォルダを参照する directorypath = Windows.Storage.KnownFolders.Objects3D.Path; #else // Unity上での動作の場合、Assets/StreamingAssets/Documentフォルダを参照する directorypath = System.IO.Path.Combine(UnityEngine.Application.streamingAssetsPath, "3D Objects"); #endif return directorypath; } }
読み込みを確認するため、指定テキストファイルの先頭行の文字列をテキストに表示するスクリプトを追加しています。
・KnownTextToPanelMessage.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class KnownTextToPanelMessage : MonoBehaviour { /// <summary> /// メッセージテキスト出力ゲームオブジェクト /// </summary> public GameObject MessageTextObject; /// <summary> /// メッセージテキストUI /// </summary> private UnityEngine.UI.Text p_MessageText; // Start is called before the first frame update void Start() { // メッセージテキストUI参照の取得 p_MessageText = MessageTextObject.GetComponent<UnityEngine.UI.Text>(); // メッセージの読み込みと表示 ShowMessage("message.txt"); } /// <summary> /// メッセージの読み込みと表示 /// </summary> /// <param name="p_filename"></param> void ShowMessage(string p_filename) { string filepath = GetObject3DPath.GetFilePath(p_filename); // ファイル読み込み // (UWP で動作するように new StreamReader(string, System.Text.Encoding) を利用する) using (System.IO.StreamReader streamreader = new System.IO.StreamReader(filepath, new System.Text.UTF8Encoding(false))) { // 最初の一行を読み込み string message = streamreader.ReadLine(); // パネルテキストに表示する p_MessageText.text = message; } } }
3Dオブジェクトフォルダにアクセスするには Capability の設定を行う必要があります。
メニューから Edit -> Project Settings.. を開き、[Capabilities]の[Objects3D]のチェックを有効にします。
HoloLens上での確認
HoloLensの3Dオブジェクトフォルダにテキストファイルを配置します。
HoloLens上でアプリケーションを起動すると、テキストファイルの先頭行が表示されました。