共用方式為


搭配適用于 HoloLens 的 Unity 的 WinRT API

此頁面說明如何在適用于 HoloLens 的 Unity 專案中使用 WinRT API。

Mixed Reality API

Windows SDK 的Mixed Reality焦點子集已在 .NET Standard 2.0 相容投影中提供,您可以在專案中使用,而不需要預處理器指示詞。 Windows.Perception 和 Windows.UI.Input.Spatial 命名空間中的大部分 API 都包含在內,而且未來可能會擴充為包含其他 API。 在編輯器中執行時,可以使用投影的 API,這可讓您使用 播放模式。 若要使用此投影,請對專案進行下列修改:

  1. 使用 Mixed Reality功能工具,新增Mixed Reality WinRT 投影 UPM 套件的參考。

    Mixed Reality功能工具中平臺支援標頭底下的 Mixed Reality WinRT 投影套件清單。

  2. 使用 Microsoft. 的命名空間前置 Windows 詞參考:

    using namespace Microsoft.Windows.Perception.Spatial;
    

    注意

    如果您的專案具有任何 Windows.* 命名空間的內嵌參考,且編譯器嘗試針對對應的 Microsoft.Windows.* 命名空間解析,匯入此套件可能會導致命名空間解析問題。 在此情況下,建議您更新這些參考以使用 global::Windows.* ,或更新這些腳本,以將特定 Windows.* 命名空間匯入為 using 語句。

  3. 將原生指標轉換取代為 FromNativePtr

    var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
    

有條件地包含 WinRT API 呼叫

您也可以使用預處理器指示詞,在針對 通用 Windows 平臺 和 Xbox One 平臺建置的 Unity 專案中使用 WinRT API。 您在以 WinRT API 為目標的 Unity 腳本中撰寫的任何程式碼,都必須有條件地包含這些組建。

這可以透過 Unity 中的兩個步驟來完成:

  1. API 相容性層級必須在播放機設定中設定為.NET 4.6.NET Standard 2.0
    • 編輯>專案設定>球員>配置>.NET 4.6.NET Standard 2.0API 相容性層級
  2. 預處理器指示 詞ENABLE_WINMD_SUPPORT 必須包裝在任何 WinRT 運用的程式碼周圍

下列程式碼片段來自 通用 Windows 平臺 的 Unity 手動頁面:C# 腳本中的 WinRT API。 在此範例中,會傳回廣告識別碼,但只會在 UWP 和 Xbox One 組建上傳回:

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

    string GetAdvertisingId() {
        #if ENABLE_WINMD_SUPPORT
            return Windows.System.UserProfile.AdvertisingManager.AdvertisingId;
        #else
            return "";
        #endif
    }
}

在 Unity C# 專案中編輯腳本

當您按兩下 Unity 編輯器中的腳本時,預設會在編輯器專案中啟動您的腳本。 因為 Visual Studio 專案不會參考Windows 執行階段,所以 WinRT API 看起來會是未知的。 ENABLE_WINMD_SUPPORT指示詞未定義,而且在您建置專案到 UWP Visual Studio 方案之前,會忽略任何#if包裝的程式碼。

另請參閱