Share via


Aggiornamento da versioni precedenti - MRTK2

Ricerca della versione corrente

Seguire queste istruzioni per scoprire quale versione di MRTK si sta usando:

  1. Aprire il progetto MRTK in Unity
  2. Passare alla cartella "MixedRealityToolkit" nella finestra del progetto
  3. Aprire il file denominato "Version"

Se il file e la cartella precedenti non esistono, si usa una versione più recente di MRTK. In tal caso, provare a eseguire le operazioni seguenti:

  1. Passare alla cartella "Realtà mista Toolkit Foundation"
  2. Fare clic su "package.json" per visualizzare un'anteprima in Unity o aprirla con un editor di testo
  3. Cercare la riga con la parola "version:"

Aggiornamento a una nuova versione di MRTK

È consigliabile eseguire lo strumento di migrazione dopo aver ottenuto l'aggiornamento di MRTK per correggere e aggiornare automaticamente i componenti deprecati e modificare le modifiche di rilievo. Lo strumento di migrazione fa parte del pacchetto Strumenti .

Le istruzioni seguenti descrivono il percorso di aggiornamento da 2.4.0 a 2.5.0. Se il progetto è nella versione 2.3.0 o precedente, leggere le modifiche tra le versioni per comprendere il percorso di aggiornamento o leggere le istruzioni della versione precedente per eseguire un aggiornamento della versione per versione.

Strumento per la funzionalità di realtà mista

Il modo più semplice per aggiornare MRTK a una versione più recente di MRTK consiste nell'usare lo strumento di funzionalità Realtà mista per scaricare i pacchetti più recenti e caricarli direttamente nel progetto Unity.

Se il progetto ha usato in precedenza file di asset Unity (con estensione unitypackage), vedere queste istruzioni.

File di asset Unity (con estensione unitypackage)

Un altro percorso di aggiornamento consiste nel scaricare manualmente i pacchetti Unity MRTK e applicarli al progetto. Vedere i passaggi seguenti:

  1. Salvare una copia del progetto corrente, nel caso in cui si raggiungono eventuali snag in qualsiasi punto dei passaggi di aggiornamento.
  2. Chiudere Unity
  3. All'interno della cartella Assets eliminare le cartelle MRTK seguenti, insieme ai relativi file con estensione meta (il progetto potrebbe non avere tutte le cartelle elencate)
    • MRTK/Core
    • MRTK/Esempi
    • MRTK/Estensioni
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Importante

    Se sono state apportate modifiche agli shader MRTK, creare un backup locale prima di eliminare la cartella MRTK/StandardAssets

    • MRTK/Strumenti

    Importante

    Non eliminare la cartella MixedRealityToolkit.Generated o il relativo file con estensione meta.

  4. Eliminare la cartella Libreria

    Importante

    Alcuni strumenti di Unity, ad esempio Collab di Unity, salvano le informazioni di configurazione nella cartella Libreria. Se si usa uno strumento che esegue questa operazione, copiare prima la cartella dei dati dello strumento dalla libreria prima dell'eliminazione, quindi ripristinarla dopo la rigenerazione della libreria.

  5. Riaprire il progetto in Unity
  6. Importare i nuovi pacchetti unity
    • Foundation - Importare prima questo pacchetto
    • Strumenti
    • (Facoltativo) Estensioni

    Nota

    Se sono state installate estensioni aggiuntive, potrebbe essere necessario importare nuovamente.

    • (Facoltativo) Esempi
  7. Chiudere Unity ed eliminare la cartella Libreria (leggere prima la nota riportata di seguito). Questo passaggio è necessario per forzare Unity ad aggiornare il database asset e a riconciliare i profili personalizzati esistenti.
  8. Avviare Unity e per ogni scena nel progetto
    • Eliminare MixedRealityToolkit e MixedRealityPlayspace, se presente, dalla gerarchia. Questa operazione eliminerà la fotocamera principale, ma verrà ricreata nel passaggio successivo. Se le proprietà della fotocamera principale sono state modificate manualmente, queste dovranno essere riapplicate manualmente dopo la creazione della nuova fotocamera.
    • Selezionare MixedRealityToolkit -> Aggiungi alla scena e configura
    • Selezionare MixedRealityToolkit -> Utilità -> Aggiornamento -> Profili di mapping controller (è necessario eseguire una sola volta) - In questo modo verranno aggiornati i profili di mapping dei controller personalizzati con assi e dati aggiornati, lasciando invariate le azioni di input assegnate personalizzate
  9. Eseguire lo strumento di migrazione ed eseguire lo strumento nel progetto completo per assicurarsi che tutto il codice venga aggiornato alla versione più recente. La finestra di migrazione contiene diversi gestori di migrazione, che devono essere eseguiti autonomamente. Questo passaggio prevede:
    • Selezionare il primo gestore di migrazione dall'elenco a discesa Selezione gestore migrazione.
    • Fare clic sul pulsante "Progetto completo".
    • Fare clic sul pulsante "Aggiungi progetto completo per la migrazione" (verrà eseguita l'analisi dell'intero progetto per gli oggetti di cui eseguire la migrazione).
    • Fare clic sul pulsante "Esegui migrazione" che deve essere abilitato se sono stati trovati oggetti di cui è possibile eseguire la migrazione.
    • Ripetere i tre passaggi precedenti per ognuno dei gestori di migrazione all'interno dell'elenco a discesa. Vedere questo problema che illustra le operazioni che è possibile eseguire per semplificare questo processo di migrazione in una versione futura.

Passaggio dai file di asset unity allo strumento di funzionalità di Realtà mista

Il passaggio dai file di asset unity ai pacchetti Realtà mista Feature Tool offre numerosi vantaggi:

  • Aggiornamento più semplice
  • Tempi di compilazione più rapidi
  • Minor numero di progetti nella soluzione Visual Studio

Per passare all'uso di Realtà mista Feature Tool è necessario un set di passaggi manuali una tantum.

  1. Salvare una copia del progetto corrente.
  2. Chiudere Unity
  3. All'interno della cartella Assets eliminare le cartelle MRTK seguenti, insieme ai relativi file con estensione meta (il progetto potrebbe non avere tutte le cartelle elencate)
    • MRTK/Core
    • MRTK/Esempi
    • MRTK/Estensioni
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Importante

    Se sono state apportate modifiche agli shader MRTK, creare un backup locale prima di eliminare la cartella MRTK/StandardAssets

    • MRTK/Strumenti

    Importante

    Non eliminare la cartella MixedRealityToolkit.Generated o il relativo file con estensione meta.

  4. Eliminare la cartella Libreria

    Importante

    Alcuni strumenti di Unity, ad esempio Collab di Unity, salvano le informazioni di configurazione nella cartella Libreria. Se si usa uno strumento che esegue questa operazione, copiare prima la cartella dei dati dello strumento dalla libreria prima dell'eliminazione, quindi ripristinarla dopo la rigenerazione della libreria.

  5. Riaprire il progetto in Unity

Dopo aver eseguito i passaggi precedenti, eseguire lo strumento Realtà mista funzionalità e importare la versione desiderata di Realtà mista Toolkit.

Aggiornamento da 2.3.0 a 2.4.0

La cartella rinomina lemodifiche dell'API

Ridenominazione delle cartelle nella versione 2.4.0

Le cartelle MixedRealityToolkit sono state rinominate e spostate in una gerarchia comune nella versione 2.4. Se un'applicazione usa percorsi hardcoded per le risorse MRTK, sarà necessario aggiornarli in base alla tabella seguente.

Cartella precedente Nuova cartella
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Esempi
MixedRealityToolkit.Extensions MRTK/Estensioni
MixedRealityToolkit.Providers MRTK/Providers
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Services
MixedRealityToolkit.Tests MRTK/Test
MixedRealityToolkit.Tools MRTK/Strumenti

Importante

Contiene MixedRealityToolkit.Generated i file generati dal cliente e rimane invariato.

Configurazione dello sguardo fisso nella versione 2.4.0

Questa versione di MRTK modifica i passaggi necessari per la configurazione dello sguardo fisso. La casella di controllo "IsEyeTrackingEnabled" è disponibile nelle impostazioni dello sguardo fisso del profilo del puntatore di input. Selezionando questa casella verrà abilitato lo sguardo fisso basato sugli occhi, invece lo sguardo fisso predefinito basato sulla testa.

Per altre informazioni su queste modifiche e istruzioni complete per la configurazione del tracciamento oculare, vedere l'articolo tracciamento oculare .

Comportamento del puntatore dello sguardo fisso nella versione 2.4.0

Il comportamento del puntatore predefinito dello sguardo fisso è stato modificato in modo che corrisponda al comportamento del puntatore predefinito dello sguardo fisso. Un puntatore dello sguardo fisso verrà eliminato automaticamente una volta rilevata una mano. Il puntatore dello sguardo fisso diventerà nuovamente visibile dopo aver detto "Seleziona".

I dettagli sulle configurazioni dello sguardo fisso e della mano sono disponibili nell'articolo occhi e mani .

Modifiche all'API nella versione 2.4.0

Classi controller personalizzate

Le classi controller personalizzate in precedenza dovevano definire SetupDefaultInteractions(Handedness). Questo metodo è stato reso obsoleto nella versione 2.4, perché il parametro della mano era ridondante con la propria mano della classe controller. Il nuovo metodo non ha parametri. Inoltre, molte classi controller hanno definito lo stesso modo (AssignControllerMappings(DefaultInteractions);), quindi la chiamata completa è stata sottoposta a refactoring in BaseController e ha eseguito un override facoltativo anziché obbligatorio.

Proprietà sguardo fisso

La UseEyeTracking proprietà dall'implementazione GazeProvider di IMixedRealityEyeGazeProvider è stata rinominata in IsEyeTrackingEnabled.

Se l'hai fatto in precedenza...

if (CoreServices.InputSystem.GazeProvider is GazeProvider gazeProvider)
{
    gazeProvider.UseEyeTracking = true;
}

Fate questo adesso...

if (CoreServices.InputSystem.GazeProvider is GazeProvider gazeProvider)
{
    gazeProvider.IsEyeTrackingEnabled = true;
}

Proprietà di WindowsApiChecker

Le proprietà di WindowsApiChecker seguenti sono state contrassegnate come obsolete. IsMethodAvailableUsare o IsPropertyAvailableIsTypeAvailable.

  • UniversalApiContractV8_IsAvailable
  • UniversalApiContractV7_IsAvailable
  • UniversalApiContractV6_IsAvailable
  • UniversalApiContractV5_IsAvailable
  • UniversalApiContractV4_IsAvailable
  • UniversalApiContractV3_IsAvailable

Non sono previsti piani per aggiungere proprietà a WindowsApiChecker per le versioni future del contratto API.

GltfMeshPrimitiveAttributes di sola lettura

Gli attributi primitivi gltf mesh usati per essere impostabili, sono ora di sola lettura. I valori verranno impostati una sola volta quando vengono deserializzati.

Migrazione icona pulsante personalizzata

Le icone dei pulsanti personalizzate in precedenza richiedevano l'assegnazione di un nuovo materiale al renderer quad del pulsante. Questa operazione non è più necessaria ed è consigliabile spostare trame di icone personalizzate in un oggetto IconSet. I materiali e le icone personalizzati esistenti vengono mantenuti. Tuttavia, saranno meno ottimali fino a quando non viene aggiornato. Per aggiornare gli asset in tutti i pulsanti del progetto al nuovo formato consigliato, usare ButtonConfigHelperMigrationHandler. (Realtà mista Toolkit -> Utilità -> Finestra di migrazione -> Selezione del gestore migrazione -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Finestra di dialogo Aggiorna

Se non viene trovata un'icona nel set di icone predefinito durante la migrazione, verrà creato un set di icone personalizzato in MixedRealityToolkit.Generated/CustomIconSets. Una finestra di dialogo indicherà che è stata eseguita questa operazione.

Notifica icona personalizzata

Aggiornamento da 2.2.0 a 2.3.0

Modifiche all'API nella versione 2.3.0

ControllerPoseSynchronizer

Il campo private ControllerPoseSynchronizer.handedness è stato contrassegnato come obsoleto. Questo deve avere un impatto minimo sulle applicazioni perché il campo non è visibile all'esterno della relativa classe.

Il setter della proprietà public ControllerPoseSynchronizer.Handedness è stato rimosso (#7012).

MSBuild per Unity

Questa versione di MRTK usa una versione più recente di MSBuild per Unity rispetto alle versioni precedenti. Durante il caricamento del progetto, se la versione precedente è elencata nel manifesto di Gestione pacchetti Unity, verrà visualizzata la finestra di dialogo di configurazione con l'opzione Abilita MSBuild per Unity selezionata. L'applicazione eseguirà un aggiornamento.

ScriptingUtilities

La classe ScriptingUtilities è stata contrassegnata come obsoleta ed è stata sostituita da ScriptUtilities nell'assembly Microsoft.MixedReality.Toolkit.Editor.Utilities. La nuova classe affina il comportamento precedente e aggiunge il supporto per la rimozione delle definizioni di scripting.

Anche se il codice esistente continuerà a funzionare nella versione 2.3.0, è consigliabile eseguire l'aggiornamento alla nuova classe.

ShellHandRayPointer

I membri lineRendererSelected e lineRendererNoTarget della classe ShellHandRayPointer sono stati sostituiti rispettivamente da lineMaterialSelected e lineMaterialNoTarget (#6863).

Sostituire lineRendererSelected con lineMaterialSelected e/o lineRendererNoTarget con lineMaterialNoTarget per risolvere gli errori di compilazione.

StartupBehavior dell'osservatore spaziale

Gli osservatori spaziali basati sulla BaseSpatialObserver classe ora rispettano il valore di StartupBehavior quando viene riabilitato (#6919).

Non sono necessarie modifiche per sfruttare questa correzione.

Prefab del controllo UX aggiornati per l'uso di PressableButton

I prefab seguenti usano ora il componente PressableButton anziché TouchHandler per l'interazione vicina (7070)

  • AnimationButton
  • Pulsante
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • ToggleSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Il codice dell'applicazione può richiedere l'aggiornamento a causa di questa modifica.

Spazio dei nomi WindowsMixedRealityUtilities

Lo spazio dei nomi di WindowsMixedRealityUtilities è cambiato da Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input a Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Aggiornare #using istruzioni per risolvere gli errori di compilazione.

Aggiornamento della versione 2.1.0 alla versione 2.2.0

Modifiche alle API nella versione 2.2.0

IMixedRealityBoundarySystem.Contains

Questo metodo è stato eseguito in precedenza in un'enumerazione sperimentale definita da Unity specifica. Ora accetta un enumerazione definita da MRTK identica all'enumerazione Unity. Questa modifica consente di preparare le API di limite future di Unity per MRTK.

MixedRealityServiceProfileAttribute

Per descrivere meglio i requisiti per il supporto di un profilo, MixedRealityServiceProfileAttribute è stato aggiornato per aggiungere una raccolta facoltativa di tipi esclusi. Come parte di questa modifica, la proprietà ServiceType è stata modificata da Type a Type[] e rinominata in RequiredTypes.

È stata aggiunta anche una seconda proprietà, ExcludedTypes.

Aggiornamento della versione 2.0.0 alla versione 2.1.0

Modifiche alle API nella versione 2.1.0

BaseNearInteractionTouchable

L'oggetto BaseNearInteractionTouchable è stato modificato per contrassegnare il OnValidate metodo come virtuale. Le classi che estendono BaseNearInteractionTouchable (ad esempio: NearInteractionTouchableUnityUI) sono state aggiornate per riflettere questa modifica.

ColliderNearInteractionTouchable

La classe ColliderNearInteractionTouchable è stata deprecata. Aggiornare i riferimenti al codice per l'uso BaseNearInteractionTouchabledi .

IMixedRealityMouseDeviceManager

Aggiunta

IMixedRealityMouseDeviceManager sono state aggiunte CursorSpeed e WheelSpeed proprietà. Queste proprietà consentono alle applicazioni di specificare un valore moltiplicatore in base al quale la velocità del cursore e della ruota, rispettivamente, verrà ridimensionata.

Si tratta di una modifica di rilievo e richiede la modifica delle implementazioni esistenti di Gestione dispositivi del mouse da modificare .

Nota

Questa modifica non è compatibile con le versioni precedenti della versione 2.0.0.

Deprecato

La MouseInputProfile proprietà è stata contrassegnata come obsoleta e verrà rimossa da una versione futura di Microsoft Realtà mista Toolkit. È consigliabile che il codice dell'applicazione non usi più questa proprietà.

Interazionebile

I metodi e le proprietà seguenti sono stati deprecati e verranno rimossi da una versione futura di Microsoft Realtà mista Toolkit. Il consiglio è aggiornare il codice dell'applicazione per le linee guida contenute nell'attributo Obsoleto e visualizzato nella console.

  • public bool Enabled
  • public bool FocusEnabled
  • public void ForceUpdateThemes()
  • public bool IsDisabled
  • public bool IsToggleButton
  • public int GetDimensionIndex()
  • public State[] GetStates()
  • public bool RequiresFocus
  • public void ResetBaseStates()
  • public virtual void SetCollision(bool collision)
  • public virtual void SetCustom(bool custom)
  • public void SetDimensionIndex(int index)
  • public virtual void SetDisabled(bool disabled)
  • public virtual void SetFocus(bool focus)
  • public virtual void SetGesture(bool gesture)
  • public virtual void SetGestureMax(bool gesture)
  • public virtual void SetGrab(bool grab)
  • public virtual void SetInteractive(bool interactive)
  • public virtual void SetObservation(bool observation)
  • public virtual void SetObservationTargeted(bool targeted)
  • public virtual void SetPhysicalTouch(bool touch)
  • public virtual void SetPress(bool press)
  • public virtual void SetTargeted(bool targeted)
  • public virtual void SetToggled(bool toggled)
  • public virtual void SetVisited(bool visited)
  • public virtual void SetVoiceCommand(bool voice)

NearInteractionTouchableSurface

La NearInteractionTouchableSurface classe è stata aggiunta e ora funge da classe di base per NearInteractionTouchable e NearInteractionTouchableUnityUI.

Modifiche del profilo nella versione 2.1.0

Profilo di rilevamento delle mani

La mesh della mano e le visualizzazioni comuni ora dispongono di un editor e impostazioni del lettore separate. Il profilo di rilevamento delle mani è stato aggiornato per consentire l'impostazione di queste visualizzazioni su; Niente, Tutto, Editor o Lettore.

Modalità di visualizzazione della mano

I profili di rilevamento della mano personalizzati potrebbero essere aggiornati per funzionare correttamente con la versione 2.1.0.

Nota

Questa modifica non è compatibile con le versioni precedenti della versione 2.0.0.

Profilo di simulazione di input

Il sistema di simulazione di input è stato aggiornato, che modifica alcune impostazioni nel profilo di simulazione di input. Alcune modifiche non possono essere migrate automaticamente e gli utenti potrebbero trovare che i profili usano valori predefiniti.

  1. Tutte le associazioni del pulsante keyCode e mouse nel profilo sono state sostituite con uno struct generico KeyBinding , che archivia rispettivamente il tipo di associazione (chiave o mouse) e il codice di associazione effettivo (KeyCode o il numero del pulsante del mouse). Lo struct ha un proprio controllo, che consente la visualizzazione unificata e offre uno strumento "associazione automatica" per impostare rapidamente le associazioni di tasti premendo il rispettivo tasto anziché selezionando da un elenco a discesa enorme.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle è stato precedentemente incluso nell'enumerazione MouseLookButton come InputSimulationMouseButton.Focused, è ora un'opzione separata. Se abilitata, la fotocamera manterrà la rotazione con il mouse dopo aver rilasciato il pulsante, fino a quando non viene premuto il tasto di escape.

  3. HandDepthMultiplier il valore predefinito è stato ridotto da 0,1 a 0,03 per supportare alcune modifiche apportate alla simulazione di input. Se la fotocamera si sposta troppo velocemente durante lo scorrimento, provare a ridurre questo valore.

  4. I tasti per la rotazione delle mani sono stati rimossi, la rotazione della mano è ora controllata anche dal mouse. Tenendo HandRotateButton premuto (CTRL) insieme al tasto di manipolazione a sinistra/destra (LShift/Space) verrà abilitata la rotazione della mano.

  5. È stato introdotto un nuovo asse "UpDown" nell'elenco degli assi di input. Questo controlla lo spostamento della fotocamera in verticale e le impostazioni predefinite per le chiavi Q/E, oltre ai pulsanti di trigger del controller.

Per altre informazioni su queste modifiche, vedere l'articolo del servizio di simulazione di input .

Profilo del provider di dati del mouse

Il profilo del provider di dati del mouse è stato aggiornato per esporre le nuove CursorSpeed proprietà e WheelSpeed . I profili personalizzati esistenti avranno automaticamente valori predefiniti. Quando il profilo viene salvato, questi nuovi valori verranno mantenuti.

Profilo di mapping del controller

Alcuni assi e tipi di input sono stati aggiornati nella piattaforma 2.1.0, in particolare intorno alla piattaforma OpenVR. Assicurarsi di selezionare MixedRealityToolkit - Utilità ->> Aggiornamento -> Profili di mapping del controller durante l'aggiornamento. Verrà aggiornato qualsiasi profilo di mapping del controller personalizzato con gli assi e i dati aggiornati, lasciando invariate le azioni di input assegnate personalizzate.

Aggiornamento di RC2 a 2.0.0

Tra le versioni RC2 e 2.0.0 di Microsoft Realtà mista Toolkit, sono state apportate modifiche che potrebbero influire sui progetti esistenti. Questo documento descrive le modifiche e come aggiornare i progetti alla versione 2.0.0.

Modifiche alle API nella versione 2.0.0

Dal rilascio di RC2, sono state apportate alcune modifiche all'API, tra cui alcune che potrebbero interrompere i progetti esistenti. Le sezioni seguenti descrivono le modifiche apportate tra le versioni RC2 e 2.0.0.

MixedRealityToolkit

Le proprietà pubbliche seguenti nell'oggetto MixedRealityToolkit sono state deprecate.

  • RegisteredMixedRealityServices non contiene più la raccolta di servizi di estensioni e provider di dati registrati.

Per accedere ai servizi di estensione, usare MixedRealityServiceRegistry.TryGetService<T>. Per accedere ai provider di dati, eseguire il cast dell'istanza del servizio in IMixedRealityDataProviderAccess e usare GetDataProvider<T>.

Usare MixedRealityServiceRegistry o CoreServices invece per le proprietà deprecate seguenti

  • ActiveSystems
  • InputSystem
  • BoundarySystem
  • CameraSystem
  • SpatialAwarenessSystem
  • TeleportSystem
  • DiagnosticsSystem
  • SceneSystem

CoreServices

La CoreServices classe è la sostituzione delle funzioni di accesso del sistema statico (ad esempio: BoundarySystem) trovate nell'oggetto MixedRealityToolkit .

Importante

Le MixedRealityToolkit funzioni di accesso di sistema sono state deprecate nella versione 2.0.0 e verranno rimosse in una versione futura di MRTK.

Nell'esempio di codice seguente viene illustrato il modello precedente e il nuovo modello.

// Old
GameObject playAreaVisualization = MixedRealityToolkit.BoundarySystem?.GetPlayAreaVisualization();

// New
GameObject playAreaVisualization = CoreServices.BoundarySystem?.GetPlayAreaVisualization();

L'uso della nuova classe CoreSystem garantisce che il codice dell'applicazione non debba essere aggiornato se si modifica l'applicazione in modo da usare un registrar del servizio diverso, ad esempio uno dei gestori di servizi sperimentali.

IMixedRealityRaycastProvider

Con l'aggiunta di IMixedRealityRaycastProvider, il profilo di configurazione del sistema di input è stato modificato. Se si dispone di un profilo personalizzato, è possibile che vengano visualizzati gli errori nell'immagine seguente quando si esegue l'applicazione.

Selezione del provider Raycast 1

Per risolvere questi problemi, aggiungere un'istanza IMixedRealityRaycastProvider al profilo di sistema di input.

Selezione del provider Raycast 2

Sistema eventi

  • I IMixedRealityEventSystem metodi Register api precedenti e Unregister sono stati contrassegnati come obsoleti. Vengono mantenuti per garantire la compatibilità con le versioni precedenti.
  • InputSystemGlobalListener è stato contrassegnato come obsoleto. La funzionalità non è stata modificata.
  • BaseInputHandler la classe di base è stata modificata da InputSystemGlobalListener a InputSystemGlobalHandlerListener. Si tratta di una modifica che causa un'interruzione per tutti i discendenti di BaseInputHandler.

Motivazione alla base del cambiamento

L'API Register del sistema eventi precedente e Unregister potrebbe causare potenzialmente più problemi in fase di esecuzione, essendo:

  • Se un componente esegue la registrazione per gli eventi globali, riceverà eventi di input globali di tutti i tipi.
  • Se uno dei componenti di un oggetto registra gli eventi di input globali, tutti i componenti di questo oggetto riceveranno eventi di input globali di tutti i tipi.
  • Se due componenti nello stesso oggetto vengono registrati negli eventi globali e uno viene disabilitato in fase di esecuzione, il secondo interrompe la ricezione di eventi globali.

Nuova API RegisterHandler e UnregisterHandler:

  • Fornisce un controllo esplicito e granulare su quali eventi di input devono essere ascoltati a livello globale e che devono essere basati sullo stato attivo.
  • Consente a più componenti dello stesso oggetto di ascoltare gli eventi globali in modo indipendente l'uno dall'altro.

Come eseguire la migrazione

  • Se l'API è stata chiamata Register/Unregister direttamente in precedenza, sostituire queste chiamate con le chiamate a .RegisterHandler/UnregisterHandler Usare le interfacce del gestore implementate come parametri generici. Se si implementano più interfacce e diverse di esse sono in ascolto di eventi di input globali, chiamare RegisterHandler più volte.
  • Se si eredita da InputSystemGlobalListener, modificare l'ereditarietà in InputSystemGlobalHandlerListener. Implementare RegisterHandlers e UnregisterHandlers astrarre metodi. Nella chiamata inputSystem.RegisterHandler di implementazione (inputSystem.UnregisterHandler) per la registrazione in tutte le interfacce del gestore per cui si desidera ascoltare gli eventi globali.
  • Se si eredita da BaseInputHandler, implementare RegisterHandlers e UnregisterHandlers metodi astratti (come per InputSystemGlobalListener).

Esempi di migrazione

// Old
class SampleHandler : MonoBehaviour, IMixedRealitySourceStateHandler, IMixedRealityHandJointHandler
{
    private void OnEnable()
    {
        InputSystem?.Register(gameObject);
    }

    private void OnDisable()
    {
        InputSystem?.Unregister(gameObject);
    }
}

// Migrated
class SampleHandler : MonoBehaviour, IMixedRealitySourceStateHandler, IMixedRealityHandJointHandler
{
    private void OnEnable()
    {
        InputSystem?.RegisterHandler<IMixedRealitySourceStateHandler>(this);
        InputSystem?.RegisterHandler<IMixedRealityHandJointHandler>(this);
    }

    private void OnDisable()
    {
        InputSystem?.UnregisterHandler<IMixedRealitySourceStateHandler>(this);
        InputSystem?.UnregisterHandler<IMixedRealityHandJointHandler>(this);
    }
}
// Old
class SampleHandler2 : InputSystemGlobalListener, IMixedRealitySpeechHandler
{
}

// Migrated
class SampleHandler2 : InputSystemGlobalHandlerListener, IMixedRealitySpeechHandler
{
    private void RegisterHandlers()
    {
        InputSystem?.RegisterHandler<IMixedRealitySpeechHandler>(this);
    }

    private void UnregisterHandlers()
    {
        InputSystem?.UnregisterHandler<IMixedRealitySpeechHandler>(this);
    }
}

// Alternative migration
class SampleHandler2 : MonoBehaviour, IMixedRealitySpeechHandler
{
    private void OnEnable()
    {
        IMixedRealityInputSystem inputSystem;
        if (MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
        {
            inputSystem?.RegisterHandler<IMixedRealitySpeechHandler>(this);
        }
    }

    private void OnDisable()
    {
        IMixedRealityInputSystem inputSystem;
        if (MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
        {
            inputSystem?.UnregisterHandler<IMixedRealitySpeechHandler>(this);
        }
    }
}

Consapevolezza spaziale

Le interfacce IMixedRealitySpatialAwarenessSystem e IMixedRealitySpatialAwarenessObserver hanno adottato più modifiche di rilievo, come descritto di seguito.

Modifiche

I metodi seguenti sono stati rinominati per descrivere meglio l'utilizzo.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent è stato rinominato in IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent per chiarire l'utilizzo.

Aggiornamenti

In base al feedback dei clienti, è stato aggiunto il supporto per la facile rimozione dei dati di consapevolezza spaziale osservati in precedenza.

  • IMixedRealitySpatialAwarenessSystem.ClearObservations()
  • IMixedRealitySpatialAwarenessSystem.ClearObservations<T>(string name)
  • IMixedRealitySpatialAwarenessObserver.ClearObservations()

Risolutori

Alcuni componenti del risolutore e la classe di gestione SolverHandler sono stati modificati per correggere vari bug e per un utilizzo più intuitivo.

SolverHandler

  • La classe non si estende più da ControllerFinder
  • TrackedObjectToReference proprietà pubblica deprecata ed è stata rinominata in TrackedTargetType
  • TrackedObjectType depreca i valori del controller a sinistra & destra. Usare invece MotionController valori o HandJoint e aggiornare una nuova TrackedHandedness proprietà per limitare il rilevamento al controller sinistro o destro

Inbetween

  • TrackedObjectForSecondTransform proprietà pubblica deprecata ed è stata rinominata in SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() è stato rimosso. Per aggiornare il risolutore, modificare le proprietà pubbliche (ad esempio SecondTrackedObjectType)

SurfaceMagnetism

  • MaxDistance proprietà pubblica deprecata ed è stata rinominata in MaxRaycastDistance
  • CloseDistance proprietà pubblica deprecata ed è stata rinominata in ClosestDistance
  • Il valore predefinito per RaycastDirectionMode è ora TrackedTargetForward il raycast nella direzione della trasformazione di destinazione rilevata in avanti
  • OrientationModei valori Vertical di enumerazione e Full, sono stati rinominati rispettivamente in TrackedTarget e SurfaceNormal
  • KeepOrientationVertical è stata aggiunta una proprietà pubblica per controllare se l'orientamento del GameObject associato rimane verticale

Pulsanti

  • PressableButton ora ha DistanceSpaceMode la proprietà impostata su Local come predefinita. In questo modo i pulsanti possono essere ridimensionati mentre sono ancora pressabili

Ritaglio sfera

L'interfaccia ClippingSphere è stata modificata per eseguire il mirroring delle API disponibili in ClippingBox e ClippingPlane.

La proprietà Radius di ClippingSphere viene ora calcolata in modo implicito in base alla scala di trasformazione. Prima che gli sviluppatori specifichino il raggio di ClippingSphere nel controllo. Se si vuole modificare il raggio, è sufficiente aggiornare la scala di trasformazione della trasformazione come di consueto.

NearInteractionTouchable e PokePointer

  • NearInteractionTouchable non gestisce più il tocco dell'area di disegno dell'interfaccia utente di Unity. La classe NearInteractionTouchableUnityUI deve essere usata per i touchable dell'interfaccia utente di Unity.
  • ColliderNearInteractionTouchable è la nuova classe di base per i touchable basati su collisori, ad eccezione di NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront è stato spostato e rinominato in PokePointer.TouchableDistance Questa è la distanza e la quale PokePointer può interagire con i touchable. In precedenza ogni touchable aveva la propria distanza di interazione massima, ma ora questa è definita in PokePointer che consente una migliore ottimizzazione.
  • BaseNearInteractionTouchable.DistBack è stato rinominato in PokeThreshold Questo rende chiaro che PokeThreshold è la controparte di DebounceThreshold. Un touchable viene attivato quando il PokeThreshold viene attraversato e rilasciato quando DebounceThreshold viene incrociato.

ReadOnlyAttribute

Lo Microsoft.MixedReality.Toolkit spazio dei nomi è stato aggiunto a ReadOnlyAttribute, BeginReadOnlyGroupAttributee EndReadOnlyGroupAttribute.

PointerClickHandler

La classe PointerClickHandler è stata deprecata. Deve PointerHandler essere invece usato, fornisce la stessa funzionalità.

Supporto del clicker holoLens

I mapping del controller del clicker di HoloLens sono cambiati da non gestito WindowsMixedRealityController a non gestito WindowsMixedRealityGGVHand. Per tenere conto di questo problema, un updater automatico verrà eseguito la prima volta che si apre il profilo ControllerMapping. Aprire tutti i profili personalizzati almeno una volta dopo l'aggiornamento alla versione 2.0.0 per attivare questo passaggio di migrazione una tantum.

InteractableHighlight

La classe InteractableHighlight è stata deprecata. È consigliabile usare invece la InteractableOnFocus classe e FocusInteractableStates l'asset. Per creare un nuovo Theme asset per , fare clic con il InteractableOnFocuspulsante destro del mouse nella finestra del progetto e selezionare Crea> Realtà mista Toolkit Interactable Theme (Crea Realtà mista Toolkit> InteractableTheme( Temainteragendo).>

HandInteractionPanZoom

HandInteractionPanZoom è stato spostato nello spazio dei nomi dell'interfaccia utente perché non era un componente di input. HandPanEventData è stato anche spostato in questo spazio dei nomi e semplificato per la corrispondenza con altri dati dell'evento dell'interfaccia utente.

Modifiche al nome dell'assembly nella versione 2.0.0

Nella versione 2.0.0 tutti i nomi di assembly ufficiali di Realtà mista Toolkit e i relativi file di definizione dell'assembly (con estensione asmdef) associati sono stati aggiornati in base al modello seguente.

Microsoft.MixedReality.Toolkit[.<name>]

In alcuni casi, sono stati uniti più assembly per creare un'unità migliore del contenuto. Se il progetto usa file con estensione asmdef personalizzati, potrebbe essere necessario eseguire l'aggiornamento.

Le tabelle seguenti descrivono il mapping dei nomi di file con estensione asmdef RC2 alla versione 2.0.0. Tutti i nomi di assembly corrispondono al nome file con estensione asmdef.

MixedRealityToolkit

RC2 2.0.0
MixedRealityToolkit.asmdef Microsoft.MixedReality.Toolkit.asmdef
MixedRealityToolkit.Core.BuildAndDeploy.asmdef Microsoft.MixedReality.Toolkit.Editor.BuildAndDeploy.asmdef
MixedRealityToolkit.Core.Definitions.Utilities.Editor.asmdef Rimosso, usare Microsoft.MixedReality.Toolkit.Editor.Utilities.asmdef
MixedRealityToolkit.Core.Extensions.EditorClassExtensions.asmdef Microsoft.MixedReality.Toolkit.Editor.ClassExtensions.asmdef
MixedRealityToolkit.Core.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Editor.Inspectors.asmdef
MixedRealityToolkit.Core.Inspectors.ServiceInspectors.asmdef Microsoft.MixedReality.Toolkit.Editor.ServiceInspectors.asmdef
MixedRealityToolkit.Core.UtilitiesAsync.asmdef Microsoft.MixedReality.Toolkit.Async.asmdef
MixedRealityToolkit.Core.Utilities.Editor.asmdef Microsoft.MixedReality.Toolkit.Editor.Utilities.asmdef
MixedRealityToolkit.Utilities.Gltf.asmdef Microsoft.MixedReality.Toolkit.Gltf.asmdef
MixedRealityToolkit.Utilities.Gltf.Importers.asmdef Microsoft.MixedReality.Toolkit.Gltf.Importers.asmdef

MixedRealityToolkit.Providers

RC2 2.0.0
MixedRealityToolkit.Providers.OpenVR.asmdef Microsoft.MixedReality.Toolkit.Providers.OpenVR.asmdef
MixedRealityToolkit.Providers.WindowsMixedReality.asmdef Microsoft.MixedReality.Toolkit.Providers.WindowsMixedReality.asmdef
MixedRealityToolkit.Providers.WindowsVoiceInput.asmdef Microsoft.MixedReality.Toolkit.Providers.WindowsVoiceInput.asmdef

MixedRealityToolkit.Services

RC2 2.0.0
MixedRealityToolkit.Services.BoundarySystem.asmdef Microsoft.MixedReality.Toolkit.Services.BoundarySystem.asmdef
MixedRealityToolkit.Services.CameraSystem.asmdef Microsoft.MixedReality.Toolkit.Services.CameraSystem.asmdef
MixedRealityToolkit.Services.DiagnosticsSystem.asmdef Microsoft.MixedReality.Toolkit.Services.DiagnosticsSystem.asmdef
MixedRealityToolkit.Services.InputSimulation.asmdef Microsoft.MixedReality.Toolkit.Services.InputSimulation.asmdef
MixedRealityToolkit.Services.InputSimulation.Editor.asmdef Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor.asmdef
MixedRealityToolkit.Services.InputSystem.asmdef Microsoft.MixedReality.Toolkit.Services.InputSystem.asmdef
MixedRealityToolkit.Services.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Services.InputSystem.Editor.asmdef
MixedRealityToolkit.Services.SceneSystem.asmdef Microsoft.MixedReality.Toolkit.Services.SceneSystem.asmdef
MixedRealityToolkit.Services.SpatialAwarenessSystem.asmdef Microsoft.MixedReality.Toolkit.Services.SpatialAwarenessSystem.asmdef
MixedRealityToolkit.Services.TeleportSystem.asmdef Microsoft.MixedReality.Toolkit.Services.TeleportSystem.asmdef

MixedRealityToolkit.SDK

RC2 2.0.0
MixedRealityToolkit.SDK.asmdef Microsoft.MixedReality.Toolkit.SDK.asmdef
MixedRealityToolkit.SDK.Inspectors.asmdef Microsoft.MixedReality.Toolkit.SDK.Inspectors.asmdef

MixedRealityToolkit.Examples

RC2 2.0.0
MixedRealityToolkit.Examples.asmdef Microsoft.MixedReality.Toolkit.Examples.asmdef
MixedRealityToolkit.Examples.Demos.Gltf.asmdef Microsoft.MixedReality.Toolkit.Demos.Gltf.asmdef
MixedRealityToolkit.Examples.Demos.StandardShader.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.StandardShader.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.Utilities.InspectorFields.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.asmdef
MixedRealityToolkit.Examples.Demos.Utilities.InspectorFields.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.UX.Interactables.asmdef Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.asmdef