APIs WinRT com o Unity para HoloLens

Esta página descreve como utilizar as APIs WinRT no seu projeto do Unity para HoloLens.

APIs de Mixed Reality

Foi disponibilizado um subconjunto Mixed Reality focado do SDK do Windows numa projeção compatível com o .NET Standard 2.0, que pode utilizar no seu projeto sem diretivas de pré-processamento. A maioria das APIs nos espaços de nomes Windows.Perception e Windows.UI.Input.Spatial estão incluídas e podem expandir-se para incluir APIs adicionais no futuro. As APIs projetadas podem ser utilizadas durante a execução no Editor, o que permite a utilização do Modo de Reprodução. Para utilizar esta projeção, faça as seguintes modificações ao seu projeto:

  1. Adicione uma referência ao pacote UPM Mixed Reality Projeções winRT com a Ferramenta de Funcionalidades de Mixed Reality.

    Uma lista do pacote de Projeções winRT Mixed Reality no cabeçalho Suporte da Plataforma na Ferramenta de Funcionalidades do Mixed Reality.

  2. Referências de prefixos ao Windows espaço de nomes com Microsoft.:

    using namespace Microsoft.Windows.Perception.Spatial;
    

    Nota

    Importar este pacote pode causar problemas de resolução do espaço de nomes se o projeto tiver referências inline a quaisquer Windows.* espaços de nomes, com o compilador a tentar resolver num espaço de nomes correspondente Microsoft.Windows.* . Neste caso, é recomendado atualizar essas referências para utilizar global::Windows.* ou atualizar esses scripts para importar o espaço de nomes específico Windows.* como uma using instrução.

  3. Substitua os moldes de ponteiro nativos por FromNativePtr:

    var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
    

Incluir condicionalmente chamadas à API WinRT

Também pode utilizar as APIs WinRT em projetos do Unity criados para a plataforma Plataforma Universal do Windows e Xbox One com diretivas de pré-processamento. Qualquer código que escreva em scripts do Unity que visem APIs WinRT tem de ser incluído condicionalmente apenas para essas compilações.

Isto pode ser feito através de dois passos no Unity:

  1. O nível de compatibilidade da API tem de ser definido como .NET 4.6 ou .NET Standard 2.0 nas definições do leitor
    • Editar>Definições> do ProjetoLeitor>Configuração>Nível de Compatibilidade de API para .NET 4.6 ou .NET Standard 2.0
  2. A diretiva do pré-processamento ENABLE_WINMD_SUPPORT tem de ser encapsulada em torno de qualquer código alavancado por WinRT

O fragmento de código seguinte é da página manual do Unity para Plataforma Universal do Windows: API WinRT em scripts C#. Neste exemplo, é devolvido um ID de publicidade, mas apenas nas compilações UWP e 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
    }
}

Editar os scripts num projeto do Unity C#

Quando faz duplo clique num script no editor do Unity, este irá, por predefinição, iniciar o script num projeto de editor. As APIs WinRT parecem ser desconhecidas porque o projeto do Visual Studio não faz referência ao Windows Runtime. A diretiva ENABLE_WINMD_SUPPORT é indefinida e qualquer #if código moldado é ignorado até que crie o projeto numa solução do Visual Studio UWP.

Ver também