HoloLens 用 Unity アプリでの Windows 名前空間の使用Using the Windows namespace with Unity apps for HoloLens

このページでは、HoloLens の Unity プロジェクトで WinRT Api を使用する方法について説明します。This page describes how to make use of WinRT APIs in your Unity project for HoloLens.

条件付きで WinRT API 呼び出しを含めるConditionally include WinRT API calls

WinRT Api は、ユニバーサル Windows プラットフォームと Xbox One プラットフォーム用に構築された Unity プロジェクトに利用できます。WinRT Api を対象とする Unity スクリプトで作成するすべてのコードは、それらのビルドに対して条件付きで含める必要があります。WinRT APIs can be leveraged for Unity projects built for the Universal Windows Platform and Xbox One platform; any code that you write in Unity scripts that target WinRT APIs must be conditionally included for only those builds.

これは、Unity の2つの手順で行うことができます。This can be done via two steps in Unity:

  1. プレーヤーの設定で、API 互換性レベルを .net 4.6または .NET Standard 2.0に設定する必要があります。API compatibility level must be set to .NET 4.6 or .NET Standard 2.0 in the player settings
    • > プロジェクト設定 プレーヤー構成 Api の互換性レベルを .net 4.6 または .NET Standard 2.0 に編集する > > > Edit > Project Settings > Player > Configuration > Api Compatibility Level to .NET 4.6 or .NET Standard 2.0
  2. プリプロセッサディレクティブENABLE_WINMD_SUPPORTは、WinRT を利用したコードをラップする必要がありますThe preprocessor directive ENABLE_WINMD_SUPPORT must be wrapped around any WinRT-leveraged code

次のコードスニペットは、ユニバーサル Windows プラットフォームのUnity の手動ページから抜粋したものです。スクリプト内のC# WinRT API。The following code snippet is from the Unity manual page for Universal Windows Platform: WinRT API in C# scripts. この例では、広告 ID が返されますが、UWP と Xbox One のみがビルドされます。In this example, an advertising ID is returned, but only on UWP and Xbox One builds:

using UnityEngine;
public class WinRTAPI : MonoBehaviour {
    void Update() {
        auto adId = GetAdvertisingId();
        // ...

    string GetAdvertisingId() {
            return Windows.System.UserProfile.AdvertisingManager.AdvertisingId;
            return "";

Unity C#プロジェクトでスクリプトを編集するEdit your scripts in a Unity C# project

Unity エディターでスクリプトをダブルクリックすると、既定ではエディタープロジェクトでスクリプトが起動されます。When you double-click a script in the Unity editor, it will by default launch your script in an editor project. Visual Studio プロジェクトで Windows ランタイムが参照されていないため、WinRT Api は不明であるように見えます。The WinRT APIs will appear to be unknown because the Visual Studio project does not reference the Windows Runtime. さらに、 ENALBE_WINMD_SUPPORTディレクティブは未定義になり、ラップされたコード #ifは、プロジェクトを UWP Visual Studio ソリューションにビルドするまで無視されます。Further, the ENALBE_WINMD_SUPPORT directive will be undefined and any #if wrapped code will be ignored until you build your project into a UWP Visual Studio solution.

関連項目See also