Önceki sürümlerden güncelleştirme — MRTK2

Geçerli sürümü bulma

Şu anda hangi MRTK sürümünü kullandığınızı öğrenmek için şu yönergeleri izleyin:

  1. MRTK projenizi Unity'de açma
  2. Proje pencerenizde "MixedRealityToolkit" klasörüne gidin
  3. "Sürüm" adlı dosyayı açın

Yukarıdaki dosya ve klasör yoksa MRTK'nin daha yeni bir sürümünü kullanıyorsunuz demektir. Bu durumda aşağıdakileri deneyin:

  1. "Karma Gerçeklik Toolkit Foundation" klasörüne gidin
  2. Unity'de önizlemeyi görmek veya bir metin düzenleyicisiyle açmak için "package.json" dosyasına tıklayın
  3. "version:" sözcüğünü içeren satırı arayın

MRTK'nin yeni sürümüne yükseltme

Kullanım dışı bırakılan bileşenlerden otomatik düzeltme ve yükseltme yapmak ve hataya neden olan değişikliklere uyum sağlamak için MRTK güncelleştirmesini aldıktan sonra geçiş aracını çalıştırmanız kesinlikle önerilir. Geçiş aracı, Araçlar paketinin bir parçasıdır.

Aşağıdaki yönergelerde 2.4.0 - 2.5.0 yükseltme yolu açıklanmaktadır. Projeniz 2.3.0 veya daha önceki bir sürümdeyse, yükseltme yolunu anlamak için sürümler arasındaki değişiklikleri okuyun veya sürüme göre yükseltme yapmak için önceki sürümün yönergelerini okuyun.

Karma Gerçeklik Özellik Aracı

MRTK'yi daha yeni bir MRTK sürümüne yükseltmenin en kolay yolu, en son paketleri indirmek ve bunları doğrudan Unity projenize yüklemek için Karma Gerçeklik Özellik Aracı'nı kullanmaktır.

Proje daha önce Unity varlığı (.unitypackage) dosyalarını kullandıysa lütfen bu yönergelere bakın.

Unity varlığı (.unitypackage) dosyaları

Bir diğer yükseltme yolu da MRTK Unity paketlerini el ile indirmek ve bunları projenize uygulamaktır. Aşağıdaki adımlara bakın,

  1. Yükseltme adımlarında herhangi bir noktada herhangi bir takozla karşılaşırsanız geçerli projenizin bir kopyasını kaydedin.
  2. Unity'i kapatma
  3. Varlıklar klasörünün içinde, aşağıdaki MRTK klasörlerini ve .meta dosyalarını silin (projede listelenen tüm klasörler olmayabilir)
    • MRTK/Core
    • MRTK/Örnekler
    • MRTK/Uzantılar
    • MRTK/Sağlayıcılar
    • MRTK/SDK
    • MRTK/Hizmetler
    • MRTK/StandardAssets

    Önemli

    MRTK gölgelendiricilerinde değişiklik yapıldıysa MRTK/StandardAssets klasörünü silmeden önce yerel bir yedekleme oluşturun

    • MRTK/Araçlar

    Önemli

    MixedRealityToolkit.Generated klasörünü veya .meta dosyasını SİlMEYİN.

  4. Kitaplık klasörünü silme

    Önemli

    Unity Collab gibi bazı Unity araçları, yapılandırma bilgilerini Kitaplık klasörüne kaydeder. Bunu kullanan bir araç kullanıyorsanız, silmeden önce aracın veri klasörünü Kitaplık'tan kopyalayın, ardından Kitaplık yeniden üretildikten sonra geri yükleyin.

  5. Unity'de projeyi yeniden açma
  6. Yeni unity paketlerini içeri aktarma
    • Foundation - Önce bu paketi içeri aktar
    • Araçlar
    • (İsteğe bağlı) Uzantı -ları

    Not

    Ek uzantılar yüklenmişse, bunların yeniden içeri aktarılması gerekebilir.

    • (İsteğe bağlı) Örnekler
  7. Unity'yi kapatın ve Kitaplık klasörünü silin (önce aşağıdaki notu okuyun!). Bu adım Unity'yi varlık veritabanını yenilemeye ve mevcut özel profilleri uzlaştırmaya zorlamak için gereklidir.
  8. Unity'yi başlatın ve projedeki her sahne için
    • MixedRealityToolkit ve MixedRealityPlayspace'i varsa hiyerarşiden silin. Bu işlem ana kamerayı siler ancak sonraki adımda yeniden oluşturulur. Ana kameranın herhangi bir özelliği el ile değiştirildiyse, yeni kamera oluşturulduktan sonra bunların el ile yeniden uygulanması gerekir.
    • MixedRealityToolkit -> Görünüme Ekle ve Yapılandır'ı seçin
    • MixedRealityToolkit - Yardımcı Programlar ->> Güncelleştirme -> Denetleyici Eşleme Profilleri 'ni seçin (yalnızca bir kez yapılması gerekir) - Bu işlem tüm özel denetleyici eşleme profillerini güncelleştirilmiş eksenler ve verilerle güncelleştirir ve özel olarak atanan giriş eylemlerinizi olduğu gibi bırakır
  9. Tüm kodunuzun en son sürüme güncelleştirildiğinden emin olmak için geçiş aracını çalıştırın ve aracı Tam Proje'de çalıştırın. Geçiş penceresi, her birinin kendi başına çalıştırılması gereken bir dizi farklı geçiş işleyicisi içerir. Bu adım şunları içerir:
    • Geçiş İşleyicisi Seçimi açılan listesinden ilk geçiş işleyicisini seçin.
    • "Tam Proje" düğmesine tıklayın.
    • "Geçiş için tam proje ekle" düğmesine tıklayın (bu işlem, geçirilecek nesneler için projenin tamamını tarar).
    • Geçirilebilir nesneler bulunduysa etkinleştirilmesi gereken "Geçir" düğmesine tıklayın.
    • Açılan listede yer alan geçiş işleyicilerinin her biri için önceki üç adımı yineleyin. (Gelecek bir sürümde bu geçiş işlemini basitleştirmek için yapılabilecek işleri kapsayan bu soruna bakın)

Unity varlık dosyalarından Karma Gerçeklik Özellik Aracı'na geçme

Unity varlık dosyalarından Karma Gerçeklik Özellik Aracı paketlerine geçiş yapmak birçok avantaj sağlar:

  • Daha kolay güncelleştirme
  • Daha hızlı derleme süreleri
  • Visual Studio çözümünde daha az proje

Karma Gerçeklik Özellik Aracı'nı kullanmaya geçmek için tek seferlik bir el ile adım kümesi gerekir.

  1. Geçerli projenizin bir kopyasını kaydedin.
  2. Unity'i kapatma
  3. Varlıklar klasörünün içinde, aşağıdaki MRTK klasörlerini ve .meta dosyalarını silin (projede listelenen tüm klasörler olmayabilir)
    • MRTK/Core
    • MRTK/Örnekler
    • MRTK/Uzantılar
    • MRTK/Sağlayıcılar
    • MRTK/SDK
    • MRTK/Hizmetler
    • MRTK/StandardAssets

    Önemli

    MRTK gölgelendiricilerinde değişiklik yapıldıysa MRTK/StandardAssets klasörünü silmeden önce yerel bir yedekleme oluşturun

    • MRTK/Araçlar

    Önemli

    MixedRealityToolkit.Generated klasörünü veya .meta dosyasını SİlMEYİN.

  4. Kitaplık klasörünü silme

    Önemli

    Unity Collab gibi bazı Unity araçları, yapılandırma bilgilerini Kitaplık klasörüne kaydeder. Bunu kullanan bir araç kullanıyorsanız, silmeden önce aracın veri klasörünü Kitaplık'tan kopyalayın, ardından Kitaplık yeniden üretildikten sonra geri yükleyin.

  5. Projeyi Unity'de yeniden açma

Önceki adımlar gerçekleştirildikten sonra Karma Gerçeklik Özellik Aracı'nı çalıştırın ve Karma Gerçeklik Araç Seti'nin istenen sürümünü içeri aktarın.

2.3.0'ı 2.4.0'a güncelleştirme

Klasör API değişiklikleriniyeniden adlandırır

2.4.0'da klasör yeniden adlandırıyor

MixedRealityToolkit klasörleri yeniden adlandırıldı ve sürüm 2.4'te ortak bir hiyerarşiye taşındı. Bir uygulama MRTK kaynakları için sabit kodlanmış yollar kullanıyorsa, aşağıdaki tabloya göre güncelleştirilmeleri gerekir.

Önceki Klasör Yeni Klasör
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Örnekler
MixedRealityToolkit.Extensions MRTK/Uzantılar
MixedRealityToolkit.Providers MRTK/Sağlayıcılar
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Hizmetler
MixedRealityToolkit.Tests MRTK/Testler
MixedRealityToolkit.Tools MRTK/Araçlar

Önemli

müşteri MixedRealityToolkit.Generated tarafından oluşturulan dosyaları içerir ve değişmeden kalır.

2.4.0'da göz bakışı kurulumu

MRTK'nin bu sürümü göz bakışı kurulumu için gereken adımları değiştirir. 'IsEyeTrackingEnabled' onay kutusu giriş işaretçisi profilinin bakış ayarlarında bulunabilir. Bu kutu işaretlenirse göz tabanlı bakış etkinleştirilir, ardından varsayılan baş tabanlı bakış etkinleştirilir.

Bu değişiklikler hakkında daha fazla bilgi edinmek ve göz izleme kurulumuyla ilgili yönergeleri tamamlamak için göz izleme makalesine bakın.

2.4.0'da göz bakışı işaretçisi davranışı

Göz bakışı varsayılan işaretçi davranışı, baş bakışı varsayılan işaretçi davranışıyla eşleşecek şekilde değiştirildi. El algılandıktan sonra göz bakışı işaretçisi otomatik olarak gizlenecektir. "Seç" dedikten sonra göz bakışı işaretçisi yeniden görünür hale gelir.

Bakış ve el kurulumlarıyla ilgili ayrıntılar göz ve eller makalesinde bulunabilir.

2.4.0'daki API değişiklikleri

Özel denetleyici sınıfları

Özel denetleyici sınıflarının daha önce tanımlaması SetupDefaultInteractions(Handedness)gerekiyordu. Bu yöntem, 2.4'te kullanımdan kaldırılmıştır, çünkü handedness parametresi denetleyici sınıfının kendi teslim süresiyle yedeklidir. Yeni yöntemin parametresi yok. Buna ek olarak, birçok denetleyici sınıfı bunu aynı şekilde tanımlamıştır (AssignControllerMappings(DefaultInteractions); ), bu nedenle tam çağrı olarak yeniden düzenlenmiş BaseController ve gerekli yerine isteğe bağlı bir geçersiz kılma yapılmıştır.

Göz Bakışı özellikleri

UseEyeTracking uygulamasından IMixedRealityEyeGazeProvider özelliği GazeProvider olarak IsEyeTrackingEnabledyeniden adlandırıldı.

Bunu daha önce yaptıysanız...

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

Bunu şimdi yapın...

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

WindowsApiChecker özellikleri

Aşağıdaki WindowsApiChecker özellikleri eski olarak işaretlendi. Lütfen veya IsPropertyAvailableIsTypeAvailablekullanınIsMethodAvailable.

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

Gelecekteki API sözleşmesi sürümleri için WindowsApiChecker'a özellik ekleme planı yoktur.

GltfMeshPrimitiveAttributes salt okunur

Önceden ayarlanabilir olan gltf mesh temel öznitelikleri artık salt okunur. Seri durumdan çıkarıldığında değerleri bir kez ayarlanır.

Özel Düğme Simgesi Geçişi

Önceden özel düğme simgelerinin düğmenin dörtlü işleyicisine yeni bir malzeme ataması gerekiyordu. Bu artık gerekli değildir ve özel simge dokularını iconSet'e taşımanızı öneririz. Mevcut özel malzemeler ve simgeler korunur. Ancak yükseltilene kadar daha az uygun olacaktır. Projedeki tüm düğmelerin varlıklarını önerilen yeni biçime yükseltmek için ButtonConfigHelperMigrationHandler'ı kullanın. (Karma Gerçeklik Araç Seti -> Yardımcı Programlar -> Geçiş Penceresi -> Geçiş İşleyicisi Seçimi -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Yükseltme penceresi iletişim kutusu

Geçiş sırasında varsayılan simge kümesinde bir simge bulunmazsa, MixedRealityToolkit.Generated/CustomIconSets içinde özel bir simge kümesi oluşturulur. Bunun gerçekleştiğini belirten bir iletişim kutusu görüntülenir.

Özel simge bildirimi

2.2.0'ı 2.3.0'a güncelleştirme

2.3.0'daki API değişiklikleri

ControllerPoseSynchronizer

Private ControllerPoseSynchronizer.handedness alanı eski olarak işaretlendi. Alan sınıfının dışında görünmediğinden, bu durum uygulamalar üzerinde en az etkiye sahip olmalıdır.

Public ControllerPoseSynchronizer.Handedness özelliğinin ayarlayıcısı kaldırıldı (#7012).

Unity için MSBuild

MRTK'nin bu sürümü, Unity için MSBuild'in önceki sürümlerden daha yeni bir sürümünü kullanır. Proje yüklemesi sırasında, eski sürüm Unity Paket Yöneticisi bildiriminde listeleniyorsa yapılandırma iletişim kutusu görüntülenir ve Unity için MSBuild'i Etkinleştir seçeneği işaretli olur. Uygulama bir yükseltme gerçekleştirir.

ScriptingUtilities

ScriptingUtilities sınıfı eski olarak işaretlendi ve Microsoft.MixedReality.Toolkit.Editor.Utilities derlemesinde ScriptUtilities ile değiştirildi. Yeni sınıf önceki davranışı iyiler ve betik tanımlarını kaldırma desteği ekler.

Mevcut kod sürüm 2.3.0'da çalışmaya devam edecek olsa da, yeni sınıfa güncelleştirilmiş olması önerilir.

ShellHandRayPointer

ShellHandRayPointer sınıfının lineRendererSelected ve lineRendererNoTarget üyeleri sırasıyla lineMaterialSelected ve lineMaterialNoTarget ile değiştirildi (#6863).

Derleme hatalarını çözmek için lineRendererSelected değerini lineMaterialSelected ve/veya lineRendererNoTarget ile lineMaterialNoTarget olarak değiştirin.

Uzamsal gözlemci StartupBehavior

Sınıf üzerinde BaseSpatialObserver oluşturulan uzamsal gözlemciler artık yeniden etkinleştirildiğinde StartupBehavior değerini kabul eder (#6919).

Bu düzeltmeden yararlanmak için değişiklik yapılması gerekmez.

UX denetimi ön güncelleştirmeleri PressableButton kullanacak şekilde güncelleştirildi

Aşağıdaki önkoşullar artık yakın etkileşim için TouchHandler yerine PressableButton bileşenini kullanıyor (7070)

  • AnimationButton
  • Düğme
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • ToggleSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Bu değişiklik nedeniyle uygulama kodunun güncelleştirilmesi gerekebilir.

WindowsMixedRealityUtilities ad alanı

WindowsMixedRealityUtilities ad alanı Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input'tan Microsoft.MixedReality.Toolkit.WindowsMixedReality(#6863) olarak değiştirildi.

Derleme hatalarını çözmek için lütfen #using deyimlerini güncelleştirin.

2.1.0'ı 2.2.0'a güncelleştirme

2.2.0'daki API değişiklikleri

IMixedRealityBoundarySystem.Contains

Bu yöntem daha önce Unity tanımlı belirli bir deneysel sabit listesinde yer alıyordu. Şimdi Unity sabit listesiyle aynı olan MRTK tanımlı bir sabit listesi alır. Bu değişiklik, MRTK'nin Unity'nin gelecekteki sınır API'leri için hazırlanmasına yardımcı olur.

MixedRealityServiceProfileAttribute

Bir profili destekleme gereksinimlerini daha iyi açıklamak için, MixedRealityServiceProfileAttribute isteğe bağlı bir dışlanan türler koleksiyonu eklemek üzere güncelleştirildi. Bu değişikliğin bir parçası olarak, ServiceType özelliği Tür[] olarak değiştirildi ve RequiredTypes olarak yeniden adlandırıldı.

ExcludedTypes adlı ikinci bir özellik de eklendi.

2.0.0'ı 2.1.0'a güncelleştirme

2.1.0'daki API değişiklikleri

BaseNearInteractionTouchable

BaseNearInteractionTouchable yöntemi sanal olarak işaretlenmek OnValidate üzere değiştirildi. Genişleten BaseNearInteractionTouchable sınıflar (örn: NearInteractionTouchableUnityUI) bu değişikliği yansıtacak şekilde güncelleştirildi.

ColliderNearInteractionTouchable

ColliderNearInteractionTouchable Sınıfı kullanım dışı bırakıldı. Kullanmak için BaseNearInteractionTouchablekod başvurularını güncelleştirin.

IMixedRealityMouseDeviceManager

Eklendi

IMixedRealityMouseDeviceManagerCursorSpeed eklendi ve WheelSpeed özellikler eklendi. Bu özellikler, uygulamaların sırasıyla imlecin ve tekerleğin hızının ölçeklendirileceği bir çarpan değeri belirtmesine olanak tanır.

Bu hataya neden olan bir değişikliktir ve mevcut fare cihaz yöneticisi uygulamalarının değiştirilmesini gerektirir.

Not

Bu değişiklik sürüm 2.0.0 ile geriye dönük olarak uyumlu değildir.

Kullanım Dışı

MouseInputProfile Özelliği kullanım dışı olarak işaretlendi ve Microsoft Karma Gerçeklik Toolkit'in gelecekteki bir sürümünden kaldırılacak. Uygulama kodunun artık bu özelliği kullanmamış olması önerilir.

Etkileşim kurulabilir

Aşağıdaki yöntemler ve özellikler kullanım dışı bırakılmıştır ve Microsoft Karma Gerçeklik Toolkit'in gelecekteki bir sürümünden kaldırılacaktır. Öneri, kullanımdan kaldırılan özniteliğinde yer alan ve konsolunda görüntülenen yönergelere göre uygulama kodunu güncelleştirmektir.

  • 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

NearInteractionTouchableSurface sınıfı eklendi ve artık ve NearInteractionTouchableUnityUIiçin NearInteractionTouchable temel sınıf görevi görür.

2.1.0'daki profil değişiklikleri

El izleme profili

El örgü ve eklem görselleştirmeleri artık ayrı bir düzenleyici ve oynatıcı ayarlarına sahiptir. El izleme profili, bu görselleştirmelerin ayarlanmasına izin verecek şekilde güncelleştirildi; Hiçbir şey, Her Şey, Düzenleyici veya Oyuncu.

El görselleştirme modları

Özel el izleme profillerinin sürüm 2.1.0 ile düzgün çalışması için güncelleştirilmiş olması gerekebilir.

Not

Bu değişiklik sürüm 2.0.0 ile geriye dönük olarak uyumlu değildir.

Giriş benzetimi profili

Giriş benzetimi sistemi yükseltildi ve bu da giriş simülasyonu profilindeki birkaç ayarı değiştiriyor. Bazı değişiklikler otomatik olarak geçirilemiyor ve kullanıcılar profillerin varsayılan değerleri kullandığını fark edebilir.

  1. Profildeki tüm KeyCode ve fare düğmesi bağlamaları, bağlama türünü (tuş veya fare) ve gerçek bağlama kodunu (sırasıyla KeyCode veya fare düğmesi numarası) depolayan genel KeyBinding bir yapıyla değiştirilmiştir. Yapı, birleşik ekrana izin veren ve büyük bir açılan listeden seçim yapmak yerine ilgili tuşa basarak hızlı bir şekilde anahtar bağlamalarını ayarlamak için bir "otomatik bağlama" aracı sunan kendi denetçisine sahiptir.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle daha önce sabit listesi içinde MouseLookButton olarak InputSimulationMouseButton.Focusedyer aldı, artık ayrı bir seçenektir. Etkinleştirildiğinde, çıkış tuşuna basılana kadar düğmeyi bıraktıktan sonra kamera fareyle dönmeye devam eder.

  3. HandDepthMultiplier giriş simülasyonundaki bazı değişiklikleri karşılamak için varsayılan değer 0,1'den 0,03'e düşürülmüştür. Kamera kaydırırken çok hızlı hareket ediyorsa bu değeri düşürmeyi deneyin.

  4. Ellerin döndürülmesinin tuşları kaldırıldı, el döndürme artık fare tarafından da kontrol edilir. (Ctrl) tuşunun sol/sağ el işleme tuşuyla (LShift/Boşluk) birlikte tutulması HandRotateButton el döndürmeyi etkinleştirir.

  5. Giriş ekseni listesine yeni bir "UpDown" ekseni eklendi. Bu, dikeydeki kamera hareketini denetler ve varsayılan olarak Q/E tuşlarının yanı sıra denetleyici tetikleyici düğmelerine de sahiptir.

Bu değişiklikler hakkında daha fazla bilgi için lütfen giriş benzetimi hizmeti makalesine bakın.

Fare veri sağlayıcısı profili

Fare veri sağlayıcısı profili, yeni CursorSpeed ve WheelSpeed özellikleri kullanıma sunma amacıyla güncelleştirildi. Mevcut özel profillerde otomatik olarak varsayılan değerler sağlanır. Profil kaydedildiğinde, bu yeni değerler kalıcı hale gelecek.

Denetleyici eşleme profili

Özellikle OpenVR platformu çevresinde bazı eksenler ve giriş türleri 2.1.0'da güncelleştirildi. Yükseltme sırasında MixedRealityToolkit -> Yardımcı Programlar -> Güncelleştirme -> Denetleyici Eşleme Profilleri'ni seçtiğinizden emin olun. Bu, tüm özel Denetleyici Eşleme Profillerini güncelleştirilmiş eksenler ve verilerle güncelleştirirken, özel olarak atanan giriş eylemlerinizi olduğu gibi bırakır.

RC2'yi 2.0.0'a güncelleştirme

Microsoft Karma Gerçeklik Toolkit'in RC2 ve 2.0.0 sürümleri arasında, mevcut projeleri etkileyebilecek değişiklikler yapıldı. Bu belgede bu değişiklikler ve projelerin 2.0.0 sürümüne nasıl güncelleştirildiği açıklanır.

2.0.0'daki API değişiklikleri

RC2 sürümünden bu yana, var olan projeleri bozabilecek bazı API değişiklikleri de dahil olmak üzere bir dizi api değişikliği yapılmıştır. Aşağıdaki bölümlerde RC2 ve 2.0.0 sürümleri arasında gerçekleşen değişiklikler açıklanmaktadır.

MixedRealityToolkit

MixedRealityToolkit nesnesinde aşağıdaki genel özellikler kullanım dışı bırakıldı.

  • RegisteredMixedRealityServices artık kayıtlı uzantı hizmetlerinin ve veri sağlayıcılarının koleksiyonunu içermez.

Uzantı hizmetlerine erişmek için kullanın MixedRealityServiceRegistry.TryGetService<T>. Veri sağlayıcılarına erişmek için hizmet örneğini öğesine IMixedRealityDataProviderAccess yayınlayıp kullanın GetDataProvider<T>.

Aşağıdaki MixedRealityServiceRegistry kullanım dışı özellikler için veya CoreServices kullanın

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

CoreServices

CoreServices sınıfı, nesnede bulunan statik sistem erişimcilerinin (ör. BoundarySystem) yerini alırMixedRealityToolkit.

Önemli

Sistem MixedRealityToolkit erişimcileri sürüm 2.0.0'da kullanım dışı bırakılmıştır ve MRTK'nin gelecek bir sürümünde kaldırılacaktır.

Aşağıdaki kod örneğinde eski ve yeni desen gösterilmektedir.

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

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

Yeni CoreSystem sınıfını kullanmak, uygulamayı farklı bir hizmet kayıt şirketi (örneğin, deneysel hizmet yöneticilerinden biri) kullanacak şekilde değiştirirseniz uygulama kodunuzun güncelleştirilmesinin gerekmemesini sağlar.

IMixedRealityRaycastProvider

IMixedRealityRaycastProvider'ın eklenmesiyle, giriş sistemi yapılandırma profili değiştirildi. Özel bir profiliniz varsa, uygulamanızı çalıştırdığınızda aşağıdaki görüntüdeki hataları alabilirsiniz.

Raycast sağlayıcısını seçme 1

Bunları düzeltmek için lütfen giriş sistemi profilinize bir IMixedRealityRaycastProvider örneği ekleyin.

Raycast sağlayıcısını seçme 2

Olay Sistemi

  • Eski IMixedRealityEventSystem API yöntemleri Register ve Unregister eski olarak işaretlendi. Geriye dönük uyumluluk için korunurlar.
  • InputSystemGlobalListener eski olarak işaretlendi. İşlevselliği değişmedi.
  • BaseInputHandler temel sınıfı olarak InputSystemGlobalListenerInputSystemGlobalHandlerListenerdeğiştirildi. Bu, alt öğeleri için hataya neden olan bir değişikliktir BaseInputHandler.

Değişikliğin arkasındaki motivasyon

Eski olay sistemi API'sinin Register çalışma Unregister zamanında birden çok soruna neden olma olasılığı vardır:

  • Bir bileşen genel olaylar için kaydolsa , tüm türlerdeki genel giriş olaylarını alır.
  • Nesnedeki bileşenlerden biri genel giriş olayları için kaydolacaksa, bu nesnedeki tüm bileşenler tüm türlerdeki genel giriş olaylarını alır.
  • Aynı nesnedeki iki bileşen genel olaylara kaydolursa ve biri çalışma zamanında devre dışı bırakılırsa, ikincisi genel olayları almayı durdurur.

Yeni API RegisterHandler ve UnregisterHandler:

  • Genel olarak hangi giriş olaylarının dinlenmesi ve hangilerinin odaklanmış tabanlı olması gerektiği üzerinde açık ve ayrıntılı bir denetim sağlar.
  • Aynı nesnedeki birden çok bileşenin genel olayları birbirinden bağımsız olarak dinlemesine izin verir.

Geçiş

  • API'yi daha önce doğrudan çağırıyorsanız Register/Unregister , bu çağrıları çağrısıyla RegisterHandler/UnregisterHandlerdeğiştirin. Genel parametreler olarak uyguladığınız işleyici arabirimlerini kullanın. Birden çok arabirim uygularsanız ve bunlardan bazıları genel giriş olaylarını dinlerse, birden çok kez çağırın RegisterHandler .
  • 'den InputSystemGlobalListenerdevralıyorsanız devralmayı olarak InputSystemGlobalHandlerListenerdeğiştirin. Yöntemleri uygulama RegisterHandlers ve UnregisterHandlers soyutlama. Genel olayları dinlemek istediğiniz tüm işleyici arabirimlerine kaydolmak için uygulama çağrısında inputSystem.RegisterHandler (inputSystem.UnregisterHandler).
  • 'den BaseInputHandlerdevralıyorsanız, ve soyut yöntemleri uygulayın UnregisterHandlersRegisterHandlers (için InputSystemGlobalListenerolduğu gibi).

Geçiş örnekleri

// 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);
        }
    }
}

Uzamsal Farkındalık

IMixedRealitySpatialAwarenessSystem ve IMixedRealitySpatialAwarenessObserver arabirimleri aşağıda açıklandığı gibi birden çok hataya neden olan değişiklik almıştır.

Değişiklikler

Aşağıdaki yöntemler, kullanımlarını daha iyi açıklamak için yeniden adlandırılmıştır.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent kullanımını netleştirmek için IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent olarak yeniden adlandırıldı.

Ekleme

Müşteri geri bildirimlerine dayanarak, önceden gözlemlenen uzamsal farkındalık verilerinin kolayca kaldırılmasına yönelik destek eklendi.

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

Solvers

Bazı çözücü bileşenleri ve SolverHandler yönetici sınıfı, çeşitli hataları düzeltmek ve daha sezgisel kullanım için değişmiştir.

SolverHandler

  • Sınıf artık ControllerFinder
  • TrackedObjectToReference ortak özellik kullanım dışı bırakıldı ve olarak yeniden adlandırıldı TrackedTargetType
  • TrackedObjectType sol & sağ denetleyici değerlerini kullanım dışı bırakır. Bunun yerine, izlemeyi sol veya sağ denetleyiciyle sınırlamak için veya HandJoint değerlerini kullanın MotionController ve yeni TrackedHandedness özelliği güncelleştirin

Inbetween

  • TrackedObjectForSecondTransform ortak özellik kullanım dışı bırakıldı ve olarak yeniden adlandırıldı SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() Kaldırıldı. Çözücüyü güncelleştirmek için ortak özellikleri değiştirin (örneğin SecondTrackedObjectType)

SurfaceMagnetism

  • MaxDistance ortak özellik kullanım dışı bırakıldı ve olarak yeniden adlandırıldı MaxRaycastDistance
  • CloseDistance ortak özellik kullanım dışı bırakıldı ve olarak yeniden adlandırıldı ClosestDistance
  • için varsayılan değer RaycastDirectionMode artık TrackedTargetForward izlenen hedef dönüşüm yönündeki raycast'ları ileriye doğru
  • OrientationModeve Fullsabit listesi değerleri Vertical sırasıyla ve SurfaceNormal olarak yeniden adlandırıldı TrackedTarget
  • KeepOrientationVertical ilişkili GameObject'in yönlendirmesinin dikey kalıp kalmayacağını denetlemek için ortak özellik eklendi

Düğmeler

  • PressableButtonDistanceSpaceMode artık özelliği varsayılan olarak ayarlanmıştırLocal. Bu, basılabilir durumdayken düğmelerin ölçeklendirilmesini sağlar

Kırpma Küresi

ClippingSphere arabirimi, ClippingBox ve ClippingPlane içinde bulunan API'leri yansıtacak şekilde değiştirildi.

ClippingSphere'ın Radius özelliği artık dönüştürme ölçeğine göre örtük olarak hesaplanır. Geliştiricilerin denetçide ClippingSphere yarıçapını belirtmesi gerekmeden önce. Yarıçapı değiştirmek istiyorsanız, dönüştürmenin dönüşüm ölçeğini normalde yaptığınız gibi güncelleştirmeniz yeter.

NearInteractionTouchable ve PokePointer

  • NearInteractionTouchable artık Unity UI tuvali dokunmayı işlemez. NearInteractionTouchableUnityUI sınıfı artık Unity UI dokunulabilir öğeler için kullanılmalıdır.
  • ColliderNearInteractionTouchable, harmanlamaları temel alan dokunulabilir öğeler için yeni temel sınıftır. Yani NearInteractionTouchableUnityUI dışındaki tüm dokunulabilir öğeler.
  • BaseNearInteractionTouchable.DistFront taşındı ve PokePointer.TouchableDistance olarak yeniden adlandırıldı Bu uzaklık ve PokePointer'ın dokunulabilir öğelerle etkileşim kurabileceği uzaklıktır. Önceden her dokunılabilirin kendi maksimum etkileşim uzaklığı vardı, ancak şimdi bu daha iyi iyileştirmeye izin veren PokePointer'da tanımlanıyor.
  • BaseNearInteractionTouchable.DistBack, PokeThreshold olarak yeniden adlandırıldı Bu, PokeThreshold'un DebounceThreshold'un karşılığı olduğunu açıkça gösterir. PokeThreshold çaprazlandığında dokunmatik bir özellik etkinleştirilir ve DebounceThreshold çaprazlandığında serbest bırakılır.

Readonlyattribute

Ad Microsoft.MixedReality.Toolkit alanı , BeginReadOnlyGroupAttributeve EndReadOnlyGroupAttributeöğesine eklendiReadOnlyAttribute.

PointerClickHandler

PointerClickHandler Sınıfı kullanım dışı bırakıldı. PointerHandler bunun yerine kullanılmalıdır, aynı işlevselliği sağlar.

HoloLens tıklayıcısı desteği

HoloLens tıklayıcısının denetleyici eşlemeleri, işlenmemiş olmaktan işlenmemiş WindowsMixedRealityController olarak WindowsMixedRealityGGVHanddeğiştirildi. Bunu hesaba eklemek için, ControllerMapping profilinizi ilk kez açtığınızda otomatik bir güncelleştirici çalışır. Bu tek seferlik geçiş adımlarını tetikleyebilmek için lütfen 2.0.0 sürümüne yükselttikten sonra özel profilleri en az bir kez açın.

InteractableHighlight

InteractableHighlight Sınıfı kullanım dışı bırakıldı. Bunun InteractableOnFocus yerine sınıf ve FocusInteractableStates varlık kullanılmalıdır. için yeni Theme bir varlık oluşturmak için proje penceresine InteractableOnFocussağ tıklayın ve Araç Seti>Etkileşime Açılabilir>TemaKarma Gerçeklik'yı> seçin.

HandInteractionPanZoom

HandInteractionPanZoom giriş bileşeni olmadığından kullanıcı arabirimi ad alanına taşındı. HandPanEventData ayrıca bu ad alanına taşındı ve diğer kullanıcı arabirimi olay verilerine karşılık gelen şekilde basitleştirildi.

2.0.0 içindeki derleme adı değişiklikleri

2.0.0 sürümünde, resmi Karma Gerçeklik Toolkit derleme adları ve ilişkili derleme tanımı (.asmdef) dosyaları aşağıdaki desene uyacak şekilde güncelleştirilmiştir.

Microsoft.MixedReality.Toolkit[.<name>]

Bazı durumlarda, içeriklerinde daha iyi bir bütünlük oluşturmak için birden çok derleme birleştirildi. Projeniz özel .asmdef dosyaları kullanıyorsa güncelleştirilmesi gerekebilir.

Aşağıdaki tablolarda RC2 .asmdef dosya adlarının 2.0.0 sürümüyle nasıl eşlediği açıklanmaktadır. Tüm derleme adları .asmdef dosya adıyla eşleşer.

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 Kaldırıldı, Microsoft.MixedReality.Toolkit.Editor.Utilities.asmdef kullanın
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