MRが楽しい

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

Unityのスクリプトで実行環境がHoloLensか識別する

本日は HoloLens の技術調査枠です。
Unityのスクリプトで実行環境がHoloLensか識別する方法について記事にします。
f:id:bluebirdofoz:20200305095136j:plain

実行環境の識別方法

スクリプトから実行中のデバイスを識別する場合、SystemInfo.devicemodel を利用します。
docs.unity3d.com

例えば以下のように HoloLens か否かを識別できます。

if (SystemInfo.deviceModel.Contains("HoloLens"))
{
    // HoloLensでの実行処理...
}
else
{
    // HoloLens以外の実行処理...
}

実機での動作を確認する

実際にアプリを作成し HoloLens での動作を確認してみます。
f:id:bluebirdofoz:20200305095414j:plain

以下の記事を元に HoloLens プロジェクトを作成します。
bluebirdofoz.hatenablog.com

シーン中のテキストパネルは以下の手順で作成しています。
bluebirdofoz.hatenablog.com

HoloLensの判定結果と取得デバイス名をテキストに表示する以下のスクリプトを作成します。
・DeviceChecker.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DeviceChecker : MonoBehaviour
{
    /// <summary>
    /// 出力用テキストフィールド
    /// </summary>
    private UnityEngine.UI.Text p_text;

    /// <summary>
    /// 起動時処理
    /// </summary>
    private void Start()
    {
        // Textコンポーネントを取得
        p_text = GetComponent<UnityEngine.UI.Text>();

        // デバイス名を出力
        string deviceName = SystemInfo.deviceModel;
        p_text.text = deviceName + System.Environment.NewLine;

        // HoloLensか否かをチェック
        bool isHoloLens = SystemInfo.deviceModel.Contains("HoloLens");
        if (isHoloLens)
        {
            p_text.text += "これは HoloLens です";
        }
        else
        {
            p_text.text += "これは HoloLens ではない";
        }
    }
}

作成したスクリプトを Text オブジェクトにアタッチします。
f:id:bluebirdofoz:20200305095451j:plain

UnityEditor 上で動作確認してみると、テキストに判定結果が表示されます。
f:id:bluebirdofoz:20200305095503j:plain

これを HoloLens 向けにプロジェクトをビルドしてインストールします。
UnityプロジェクトのビルドとHoloLensへのインストール手順については以下を参照してください。
bluebirdofoz.hatenablog.com

HoloLensでの動作確認

HoloLens 上で動作確認を行います。
以下の通り、HoloLens と判定されれば成功です。
f:id:bluebirdofoz:20200305095137j:plain

参考ページ

その他、HoloLens以外のデバイスなどは以下のようなデバイス名が取得できるようです。
qiita.com