Memperbarui dari versi sebelumnya — MRTK2

Menemukan versi saat ini

Ikuti petunjuk berikut untuk mengetahui versi MRTK mana yang saat ini Anda gunakan:

  1. Buka proyek MRTK Anda di Unity
  2. Navigasi ke folder "MixedRealityToolkit" di jendela Proyek Anda
  3. Buka file yang disebut "Versi"

Jika file dan folder di atas tidak ada, Anda berada di versi MRTK yang lebih baru. Dalam hal ini, cobalah hal berikut:

  1. Buka folder "Mixed Reality Toolkit Foundation"
  2. Klik "package.json" untuk melihat pratinjau di Unity atau membukanya dengan editor teks
  3. Cari baris dengan kata "version:"

Memutakhirkan ke versi baru MRTK

Sangat disarankan untuk menjalankan alat migrasi setelah mendapatkan pembaruan MRTK untuk perbaikan otomatis dan peningkatan dari komponen yang tidak digunakan lagi dan menyesuaikan dengan perubahan yang melanggar. Alat migrasi adalah bagian dari paket Alat .

Instruksi di bawah ini menjelaskan jalur peningkatan 2.4.0 hingga 2.5.0. Jika proyek Anda menggunakan versi 2.3.0 atau yang lebih lama, baca perubahan antar versi untuk memahami jalur peningkatan, atau baca instruksi rilis sebelumnya untuk melakukan peningkatan versi demi versi.

Alat Fitur Mixed Reality

Cara termudah untuk meningkatkan MRTK ke MRTK versi yang lebih baru adalah dengan menggunakan Mixed Reality Feature Tool untuk mengunduh paket terbaru dan memuatnya langsung ke proyek Unity Anda.

Jika proyek sebelumnya menggunakan file aset Unity (.unitypackage), silakan lihat instruksi ini.

File aset Unity (.unitypackage)

Jalur peningkatan lainnya adalah mengunduh paket MRTK Unity secara manual dan menerapkannya ke proyek Anda. Lihat langkah-langkah di bawah ini,

  1. Simpan salinan proyek Anda saat ini, jika Anda mencapai hambatan kapan saja dalam langkah-langkah peningkatan.
  2. Tutup Unity
  3. Di dalam folder Aset , hapus folder MRTK berikut, bersama dengan file .meta mereka (proyek mungkin tidak memiliki semua folder yang tercantum)
    • MRTK/Core
    • MRTK/Contoh
    • MRTK/Extensions
    • MRTK/Penyedia
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Penting

    Jika modifikasi dilakukan pada shader MRTK, buat cadangan lokal sebelum menghapus folder MRTK/StandardAssets

    • MRTK/Alat

    Penting

    JANGAN hapus folder MixedRealityToolkit.Generated , atau file .meta-nya.

  4. Menghapus folder Pustaka

    Penting

    Beberapa alat Unity, seperti Unity Collab, menyimpan info konfigurasi ke folder Pustaka. Jika menggunakan alat yang melakukan ini, salin folder data alat terlebih dahulu dari Pustaka sebelum menghapus, lalu pulihkan setelah Pustaka diregenerasi.

  5. Buka kembali proyek di Unity
  6. Mengimpor paket unity baru
    • Foundation - Impor paket ini terlebih dahulu
    • Alat
    • (Opsional) Ekstensi

    Catatan

    Jika ekstensi tambahan telah diinstal, ekstensi tersebut mungkin perlu diimpor ulang.

    • (Opsional) Contoh
  7. Tutup Unity dan hapus folder Pustaka (baca catatan di bawah ini terlebih dahulu!). Langkah ini diperlukan untuk memaksa Unity untuk merefresh database asetnya dan mendamaikan profil kustom yang ada.
  8. Luncurkan Unity, dan untuk setiap adegan dalam proyek
    • Hapus MixedRealityToolkit dan MixedRealityPlayspace, jika ada, dari hierarki. Ini akan menghapus kamera utama, tetapi akan dibuat ulang di langkah berikutnya. Jika ada properti kamera utama yang telah diubah secara manual, ini harus diterapkan kembali secara manual setelah kamera baru dibuat.
    • Pilih MixedRealityToolkit -> Tambahkan ke Adegan dan Konfigurasikan
    • Pilih MixedRealityToolkit -> Utilitas -> Pembaruan -> Profil Pemetaan Pengontrol (hanya perlu dilakukan sekali) - Ini akan memperbarui profil pemetaan pengontrol kustom dengan sumbu dan data yang diperbarui, sambil membiarkan tindakan input yang ditetapkan khusus utuh
  9. Jalankan alat migrasi dan jalankan alat pada Proyek Penuh untuk memastikan bahwa semua kode Anda diperbarui ke yang terbaru. Jendela migrasi berisi sejumlah penangan migrasi yang berbeda, yang masing-masing harus dijalankan sendiri. Langkah ini melibatkan:
    • Pilih handler migrasi pertama dari menu dropdown Pemilihan Handler Migrasi .
    • Klik tombol "Proyek Penuh".
    • Klik tombol "Tambahkan proyek penuh untuk migrasi" (ini akan memindai seluruh proyek untuk objek yang akan dimigrasikan).
    • Klik tombol "Migrasi" yang harus diaktifkan jika ada objek yang dapat dimigrasikan ditemukan.
    • Ulangi tiga langkah sebelumnya untuk setiap penangan migrasi dalam dropdown. (Lihat masalah ini yang mencakup pekerjaan yang dapat dilakukan untuk menyederhanakan proses migrasi ini dalam rilis mendatang)

Beralih dari file aset Unity ke Alat Fitur Mixed Reality

Beralih dari file aset Unity ke paket Alat Fitur Mixed Reality membawa sejumlah manfaat:

  • Pembaruan yang lebih mudah
  • Waktu kompilasi yang lebih cepat
  • Lebih sedikit proyek dalam solusi Visual Studio

Mengubah menggunakan Alat Fitur Mixed Reality memerlukan serangkaian langkah manual satu kali.

  1. Simpan salinan proyek Anda saat ini.
  2. Tutup Unity
  3. Di dalam folder Aset , hapus folder MRTK berikut, bersama dengan file .meta mereka (proyek mungkin tidak memiliki semua folder yang tercantum)
    • MRTK/Core
    • MRTK/Contoh
    • MRTK/Extensions
    • MRTK/Penyedia
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Penting

    Jika modifikasi dilakukan pada shader MRTK, buat cadangan lokal sebelum menghapus folder MRTK/StandardAssets

    • MRTK/Alat

    Penting

    JANGAN hapus folder MixedRealityToolkit.Generated , atau file .meta-nya.

  4. Menghapus folder Pustaka

    Penting

    Beberapa alat Unity, seperti Unity Collab, menyimpan info konfigurasi ke folder Pustaka. Jika menggunakan alat yang melakukan ini, salin folder data alat terlebih dahulu dari Pustaka sebelum menghapus, lalu pulihkan setelah Pustaka diregenerasi.

  5. Buka kembali proyek di Unity

Setelah langkah-langkah sebelumnya dilakukan, jalankan Alat Fitur Mixed Reality dan impor versi Mixed Reality Toolkit yang diinginkan.

Memperbarui 2.3.0 ke 2.4.0

Folder mengganti namaperubahan API

Folder berganti nama dalam 2.4.0

Folder MixedRealityToolkit telah diganti namanya dan dipindahkan ke hierarki umum dalam versi 2.4. Jika aplikasi menggunakan jalur berkode keras ke sumber daya MRTK, aplikasi tersebut perlu diperbarui per tabel berikut.

Folder Sebelumnya Folder Baru
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Contoh
MixedRealityToolkit.Extensions MRTK/Ekstensi
MixedRealityToolkit.Providers MRTK/Penyedia
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Services
MixedRealityToolkit.Tests MRTK/Tes
MixedRealityToolkit.Tools MRTK/Alat

Penting

berisi MixedRealityToolkit.Generated file yang dihasilkan pelanggan dan tetap tidak berubah.

Pengaturan tatapan mata di 2.4.0

Versi MRTK ini memodifikasi langkah-langkah yang diperlukan untuk pengaturan tatapan mata. Kotak centang 'IsEyeTrackingEnabled' dapat ditemukan di pengaturan tatapan profil penunjuk input. Mencentang kotak ini akan mengaktifkan tatapan berbasis mata, melainkan tatapan berbasis kepala default.

Untuk informasi selengkapnya tentang perubahan ini dan instruksi lengkap untuk penyiapan pelacakan mata, silakan lihat artikel pelacakan mata .

Perilaku penunjuk tatapan mata di 2.4.0

Perilaku penunjuk default tatapan mata telah dimodifikasi agar sesuai dengan perilaku penunjuk default tatapan kepala. Penunjuk tatapan mata akan secara otomatis ditekan setelah tangan terdeteksi. Penunjuk tatapan mata akan terlihat lagi setelah mengatakan "Pilih".

Detail tentang tatapan dan pengaturan tangan dapat ditemukan di artikel mata dan tangan .

Perubahan API di 2.4.0

Kelas pengontrol kustom

Kelas pengontrol kustom sebelumnya harus mendefinisikan SetupDefaultInteractions(Handedness). Metode ini telah dibuat usang pada 2.4, karena parameter handedness redundan dengan handedness kelas pengontrol sendiri. Metode baru tidak memiliki parameter. Selain itu, banyak kelas pengontrol mendefinisikan ini dengan cara yang sama (AssignControllerMappings(DefaultInteractions);), sehingga panggilan penuh telah direfaktor ke dalam BaseController dan membuat penimpaan opsional alih-alih diperlukan.

Properti Tatapan Mata

Properti UseEyeTracking dari implementasi IMixedRealityEyeGazeProvider diganti namanya menjadi IsEyeTrackingEnabledGazeProvider .

Jika Anda melakukan ini sebelumnya ...

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

Lakukan ini sekarang...

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

Properti WindowsApiChecker

Properti WindowsApiChecker berikut telah ditandai sebagai usang. Silakan gunakan IsMethodAvailable, IsPropertyAvailable atau IsTypeAvailable.

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

Tidak ada rencana untuk menambahkan properti ke WindowsApiChecker untuk versi kontrak API di masa mendatang.

GltfMeshPrimitiveAttributes baca-saja

Atribut primitif jala gltf yang dulunya dapat diatur, sekarang bersifat baca-saja. Nilainya akan diatur sekali ketika dideserialisasi.

Migrasi Ikon Tombol Kustom

Ikon tombol kustom sebelumnya diperlukan untuk menetapkan materi baru ke perender quad tombol. Ini tidak lagi diperlukan dan sebaiknya pindahkan tekstur ikon kustom ke dalam IconSet. Materi dan ikon kustom yang ada dipertahankan. Namun mereka akan kurang optimal sampai ditingkatkan. Untuk meningkatkan aset pada semua tombol dalam proyek ke format baru yang direkomendasikan, gunakan ButtonConfigHelperMigrationHandler. (Mixed Reality Toolkit -> Utilitas -> Jendela Migrasi -> Pemilihan Handler Migrasi -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Dialog jendela pemutakhiran

Jika ikon tidak ditemukan di ikon default yang diatur selama migrasi, set ikon kustom akan dibuat di MixedRealityToolkit.Generated/CustomIconSets. Dialog akan menunjukkan bahwa ini telah terjadi.

Pemberitahuan ikon kustom

Memperbarui 2.2.0 ke 2.3.0

Perubahan API di 2.3.0

ControllerPoseSynchronizer

Bidang ControllerPoseSynchronizer.handedness privat telah ditandai sebagai usang. Ini seharusnya berdampak minimal pada aplikasi karena bidang tidak terlihat di luar kelasnya.

Setter properti ControllerPoseSynchronizer.Handedness publik telah dihapus (#7012).

MSBuild untuk Unity

Versi MRTK ini menggunakan versi MSBuild yang lebih baru untuk Unity daripada rilis sebelumnya. Selama beban proyek, jika versi lama tercantum dalam manifes Unity Package Manger, dialog konfigurasi akan muncul, dengan opsi Aktifkan MSBuild untuk Unity dicentang. Menerapkan akan melakukan peningkatan.

ScriptingUtilities

Kelas ScriptingUtilities telah ditandai sebagai usang dan telah digantikan oleh ScriptUtilities, di rakitan Microsoft.MixedReality.Toolkit.Editor.Utilities. Kelas baru menyempurnakan perilaku sebelumnya dan menambahkan dukungan untuk menghapus definisi pembuatan skrip.

Meskipun kode yang ada akan terus berfungsi dalam versi 2.3.0, disarankan untuk memperbarui ke kelas baru.

ShellHandRayPointer

Anggota lineRendererSelected dan lineRendererNoTarget dari kelas ShellHandRayPointer telah digantikan oleh lineMaterialSelected dan lineMaterialNoTarget, masing-masing (#6863).

Ganti lineRendererSelected dengan lineMaterialSelected dan/atau lineRendererNoTarget dengan lineMaterialNoTarget untuk mengatasi kesalahan kompilasi.

Pengamat spasial StartupBehavior

Pengamat spasial yang dibangun di BaseSpatialObserver kelas sekarang menghormati nilai StartupBehavior saat diaktifkan kembali (#6919).

Tidak ada perubahan yang diperlukan untuk memanfaatkan perbaikan ini.

Prefab kontrol UX diperbarui untuk menggunakan PressableButton

Prefab berikut sekarang menggunakan komponen PressableButton alih-alih TouchHandler untuk interaksi dekat (7070)

  • Tombol Animasi
  • Tombol
  • ButtonHoloLens1
  • TombolHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • AlihkanSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Kode aplikasi mungkin memerlukan pembaruan karena perubahan ini.

Namespace Layanan WindowsMixedRealityUtilities

Namespace WindowsMixedRealityUtilities berubah dari Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input ke Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Harap perbarui pernyataan #using untuk mengatasi kesalahan kompilasi.

Memperbarui 2.1.0 ke 2.2.0

Perubahan API di 2.2.0

IMixedRealityBoundarySystem.Contains

Metode ini sebelumnya mengambil enum eksperimental tertentu yang ditentukan Unity. Sekarang dibutuhkan enum yang ditentukan MRTK yang identik dengan enum Unity. Perubahan ini membantu menyiapkan MRTK untuk API batas unity di masa depan.

MixedRealityServiceProfileAttribute

Untuk lebih menjelaskan persyaratan untuk mendukung profil, MixedRealityServiceProfileAttribute telah diperbarui untuk menambahkan koleksi opsional jenis yang dikecualikan. Sebagai bagian dari perubahan ini, properti ServiceType telah diubah dari Tipe menjadi Tipe[] dan diganti namanya menjadi RequiredTypes.

Properti kedua, ExcludedTypes juga telah ditambahkan.

Memperbarui 2.0.0 ke 2.1.0

Perubahan API di 2.1.0

BaseNearInteractionTouchable

BaseNearInteractionTouchable telah dimodifikasi untuk menandai OnValidate metode sebagai virtual. Kelas yang diperluas BaseNearInteractionTouchable (misalnya: NearInteractionTouchableUnityUI) telah diperbarui untuk mencerminkan perubahan ini.

ColliderNearInteractionTouchable

Kelas ColliderNearInteractionTouchable tidak digunakan lagi. Harap perbarui referensi kode untuk menggunakan BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Ditambahkan

IMixedRealityMouseDeviceManager telah ditambahkan CursorSpeed dan WheelSpeed properti. Properti ini memungkinkan aplikasi untuk menentukan nilai pengali di mana kecepatan kursor dan roda, masing-masing akan diskalakan.

Ini adalah perubahan yang melanggar dan mengharuskan implementasi manajer perangkat mouse yang ada untuk dimodifikasi .

Catatan

Perubahan ini tidak kompatibel mundur dengan versi 2.0.0.

Tidak digunakan lagi

Properti MouseInputProfile telah ditandai sebagai usang dan akan dihapus dari versi Microsoft Mixed Reality Toolkit di masa mendatang. Disarankan agar kode aplikasi tidak lagi menggunakan properti ini.

Dapat berinteraksi

Metode dan properti berikut telah ditolak dan akan dihapus dari versi Microsoft Mixed Reality Toolkit di masa mendatang. Rekomendasinya adalah memperbarui kode aplikasi sesuai panduan yang terkandung dalam atribut Usang dan ditampilkan di konsol.

  • 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

Kelas NearInteractionTouchableSurface telah ditambahkan dan sekarang berfungsi sebagai kelas dasar untuk NearInteractionTouchable dan NearInteractionTouchableUnityUI.

Perubahan profil di 2.1.0

Profil pelacakan tangan

Visualisasi jala tangan dan sendi sekarang memiliki pengaturan editor dan pemutar terpisah. Profil pelacakan tangan telah diperbarui untuk memungkinkan pengaturan visualisasi ini; Tidak ada, Semuanya, Editor, atau Pemutar.

Mode visualisasi tangan

Profil pelacakan tangan kustom mungkin perlu diperbarui agar berfungsi dengan benar dengan versi 2.1.0.

Catatan

Perubahan ini tidak kompatibel mundur dengan versi 2.0.0.

Profil simulasi input

Sistem simulasi input telah ditingkatkan, yang mengubah beberapa pengaturan di profil simulasi input. Beberapa perubahan tidak dapat dimigrasikan secara otomatis dan pengguna mungkin menemukan bahwa profil menggunakan nilai default.

  1. Semua pengikatan KeyCode dan tombol mouse di profil telah diganti dengan struct generik KeyBinding , yang menyimpan jenis pengikatan (kunci atau mouse) serta kode pengikatan aktual (KeyCode atau nomor tombol mouse masing-masing). Struktur memiliki inspekturnya sendiri, yang memungkinkan tampilan terpadu dan menawarkan alat "pengikatan otomatis" untuk mengatur pengikatan kunci dengan cepat dengan menekan masing-masing kunci alih-alih memilih dari daftar dropdown yang besar.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle sebelumnya disertakan dalam MouseLookButton enum sebagai InputSimulationMouseButton.Focused, sekarang menjadi opsi terpisah. Saat diaktifkan, kamera akan terus berputar dengan mouse setelah melepaskan tombol, hingga tombol escape ditekan.

  3. HandDepthMultiplier nilai default telah diturunkan dari 0,1 menjadi 0,03 untuk mengakomodasi beberapa perubahan pada simulasi input. Jika kamera bergerak terlalu cepat saat menggulir, coba turunkan nilai ini.

  4. Kunci untuk memutar tangan telah dilepas, rotasi tangan sekarang dikontrol oleh mouse juga. Menahan HandRotateButton (Ctrl) bersama dengan kunci manipulasi tangan kiri/kanan (LShift/Space) akan mengaktifkan rotasi tangan.

  5. Sumbu baru "UpDown" telah diperkenalkan ke daftar sumbu input. Ini mengontrol pergerakan kamera di vertikal dan default ke tombol Q/E serta tombol pemicu pengontrol.

Untuk informasi selengkapnya tentang perubahan ini, silakan lihat artikel layanan simulasi input .

Profil penyedia data mouse

Profil penyedia data mouse telah diperbarui untuk mengekspos properti dan WheelSpeed baruCursorSpeed. Profil kustom yang ada akan secara otomatis memiliki nilai default yang disediakan. Ketika profil disimpan, nilai baru ini akan dipertahankan.

Profil pemetaan pengontrol

Beberapa sumbu dan jenis input telah diperbarui di 2.1.0, terutama di sekitar platform OpenVR. Pastikan untuk memilih MixedRealityToolkit - Utilities ->> Update -> Controller Mapping Profiles saat meningkatkan. Ini akan memperbarui Profil Pemetaan Pengontrol kustom dengan sumbu dan data yang diperbarui, sambil membiarkan tindakan input yang ditetapkan khusus utuh.

Memperbarui RC2 ke 2.0.0

Antara rilis Microsoft Mixed Reality Toolkit RC2 dan 2.0.0, perubahan dilakukan yang dapat memengaruhi proyek yang ada. Dokumen ini menjelaskan perubahan tersebut dan cara memperbarui proyek ke rilis 2.0.0.

Perubahan API di 2.0.0

Sejak rilis RC2, ada sejumlah perubahan API termasuk beberapa yang mungkin merusak proyek yang ada. Bagian berikut menjelaskan perubahan yang telah terjadi antara rilis RC2 dan 2.0.0.

MixedRealityToolkit

Properti publik berikut pada objek MixedRealityToolkit telah ditolak.

  • RegisteredMixedRealityServices tidak lagi berisi kumpulan layanan ekstensi terdaftar dan penyedia data.

Untuk mengakses layanan ekstensi, gunakan MixedRealityServiceRegistry.TryGetService<T>. Untuk mengakses penyedia data, transmisikan instans layanan ke IMixedRealityDataProviderAccess dan gunakan GetDataProvider<T>.

Gunakan MixedRealityServiceRegistry atau CoreServices sebagai gantinya untuk properti yang tidak digunakan lagi berikut ini

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

CoreServices

Kelas CoreServices adalah pengganti aksesor sistem statis (misalnya: BoundarySystem) yang ditemukan di MixedRealityToolkit objek .

Penting

Aksesor MixedRealityToolkit sistem tidak digunakan lagi dalam versi 2.0.0 dan akan dihapus dalam rilis MRTK di masa mendatang.

Contoh kode berikut mengilustrasikan pola lama dan baru.

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

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

Menggunakan kelas CoreSystem baru akan memastikan bahwa kode aplikasi Anda tidak perlu diperbarui jika Anda mengubah aplikasi untuk menggunakan pencatat layanan yang berbeda (misalnya: salah satu manajer layanan eksperimental).

IMixedRealityRaycastProvider

Dengan penambahan IMixedRealityRaycastProvider, profil konfigurasi sistem input diubah. Jika Anda memiliki profil kustom, Anda mungkin menerima kesalahan dalam gambar berikut saat menjalankan aplikasi Anda.

Memilih penyedia Raycast 1

Untuk memperbaikinya, tambahkan instans IMixedRealityRaycastProvider ke profil sistem input Anda.

Memilih penyedia Raycast 2

Sistem Kejadian

  • Metode IMixedRealityEventSystemRegister API lama dan Unregister telah ditandai sebagai usang. Mereka dipertahankan untuk kompatibilitas mundur.
  • InputSystemGlobalListener telah ditandai sebagai usang. Fungsionalitasnya tidak berubah.
  • BaseInputHandler kelas dasar telah diubah dari InputSystemGlobalListener ke InputSystemGlobalHandlerListener. Ini adalah perubahan yang melanggar untuk setiap keturunan BaseInputHandler.

Motivasi di balik perubahan

API Register sistem peristiwa lama dan Unregister berpotensi menyebabkan beberapa masalah dalam runtime, utamanya adalah:

  • Jika komponen mendaftar untuk peristiwa global, komponen akan menerima peristiwa input global dari semua jenis.
  • Jika salah satu komponen pada objek mendaftar untuk peristiwa input global, semua komponen pada objek ini akan menerima peristiwa input global dari semua jenis.
  • Jika dua komponen pada objek yang sama mendaftar ke peristiwa global, dan kemudian satu dinonaktifkan dalam runtime, yang kedua berhenti menerima peristiwa global.

API RegisterHandler baru dan UnregisterHandler:

  • Menyediakan kontrol eksplisit dan terperinci di mana peristiwa input harus didengarkan secara global dan mana yang harus berbasis fokus.
  • Memungkinkan beberapa komponen pada objek yang sama untuk mendengarkan peristiwa global secara independen satu sama lain.

Cara bermigrasi

  • Jika Anda telah memanggil Register/Unregister API secara langsung sebelumnya, ganti panggilan ini dengan panggilan ke .RegisterHandler/UnregisterHandler Gunakan antarmuka handler yang Anda terapkan sebagai parameter generik. Jika Anda menerapkan beberapa antarmuka, dan beberapa di antaranya mendengarkan peristiwa input global, panggil RegisterHandler beberapa kali.
  • Jika Anda telah mewarisi dari InputSystemGlobalListener, ubah pewarisan menjadi InputSystemGlobalHandlerListener. Menerapkan RegisterHandlers dan UnregisterHandlers mengabstraksi metode. Dalam panggilan inputSystem.RegisterHandler implementasi (inputSystem.UnregisterHandler) untuk mendaftar di semua antarmuka handler yang ingin Anda dengarkan peristiwa globalnya.
  • Jika Anda telah mewarisi dari BaseInputHandler, terapkan RegisterHandlers dan UnregisterHandlers metode abstrak (sama seperti untuk InputSystemGlobalListener).

Contoh migrasi

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

Kesadaran Spasial

Antarmuka IMixedRealitySpatialAwarenessSystem dan IMixedRealitySpatialAwarenessObserver telah mengambil beberapa perubahan yang melanggar seperti yang dijelaskan di bawah ini.

Perubahan

Metode berikut telah diganti namanya untuk menggambarkan penggunaannya dengan lebih baik.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent telah diganti namanya menjadi IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent untuk mengklarifikasi penggunaannya.

Penambahan

Berdasarkan umpan balik pelanggan, dukungan untuk penghapusan data kesadaran spasial yang diamati sebelumnya telah ditambahkan.

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

Pemecah

Beberapa komponen pemecah dan kelas manajer SolverHandler telah berubah untuk memperbaiki berbagai bug dan untuk penggunaan yang lebih intuitif.

SolverHandler

  • Kelas tidak lagi diperluas dari ControllerFinder
  • TrackedObjectToReference properti publik tidak digunakan lagi dan telah diganti namanya menjadi TrackedTargetType
  • TrackedObjectType tidak digunakan lagi & nilai pengontrol kanan. Sebagai gantinya, gunakan MotionController nilai atau HandJoint dan perbarui properti baru TrackedHandedness untuk membatasi pelacakan ke pengontrol kiri atau kanan

InBetween

  • TrackedObjectForSecondTransform properti publik tidak digunakan lagi dan telah diganti namanya menjadi SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() telah dihapus. Untuk memperbarui pemecah, ubah properti publik (yaitu SecondTrackedObjectType)

SurfaceMagnetism

  • MaxDistance properti publik tidak digunakan lagi dan telah diganti namanya menjadi MaxRaycastDistance
  • CloseDistance properti publik tidak digunakan lagi dan telah diganti namanya menjadi ClosestDistance
  • Nilai default untuk RaycastDirectionMode sekarang TrackedTargetForward adalah raycast mana yang ke arah transformasi target terlacak ke depan
  • OrientationMode nilai enum, Vertical dan Full, telah diganti namanya menjadi TrackedTarget dan SurfaceNormal masing-masing
  • KeepOrientationVertical properti publik telah ditambahkan untuk mengontrol apakah orientasi GameObject terkait tetap vertikal

Tombol

  • PressableButton sekarang memiliki DistanceSpaceMode properti yang diatur ke Local sebagai default. Ini memungkinkan tombol untuk diskalakan saat masih dapat ditekan

Mengklip Sphere

Antarmuka ClippingSphere telah berubah untuk mencerminkan API yang ditemukan di ClippingBox dan ClippingPlane.

Properti Radius ClippingSphere sekarang dihitung secara implisit berdasarkan skala transformasi. Sebelum pengembang harus menentukan radius ClippingSphere di inspektur. Jika Anda ingin mengubah radius, cukup perbarui skala transformasi transformasi seperti biasa.

NearInteractionTouchable dan PokePointer

  • NearInteractionTouchable tidak menangani kanvas UI Unity menyentuh lagi. Kelas NearInteractionTouchableUnityUI harus digunakan untuk unity UI touchables sekarang.
  • ColliderNearInteractionTouchable adalah kelas dasar baru untuk touchable berdasarkan collider, yaitu setiap yang dapat disentuh kecuali NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront telah dipindahkan dan diganti namanya menjadi PokePointer.TouchableDistance Ini adalah jarak dan mana PokePointer dapat berinteraksi dengan touchable. Sebelumnya setiap sentuhan memiliki jarak interaksi maksimumnya sendiri, tetapi sekarang ini didefinisikan dalam PokePointer yang memungkinkan pengoptimalan yang lebih baik.
  • BaseNearInteractionTouchable.DistBack telah diganti namanya menjadi PokeThreshold Ini memperjelas bahwa PokeThreshold adalah rekan DebounceThreshold. Sentuhan diaktifkan ketika PokeThreshold disilangkan, dan dilepaskan ketika DebounceThreshold disilangkan.

ReadOnlyAttribute

Namespace Microsoft.MixedReality.Toolkit telah ditambahkan ke ReadOnlyAttribute, BeginReadOnlyGroupAttribute, dan EndReadOnlyGroupAttribute.

PointerClickHandler

Kelas PointerClickHandler tidak digunakan lagi. PointerHandler Yang harus digunakan sebagai gantinya, menyediakan fungsionalitas yang sama.

Dukungan clicker HoloLens

Pemetaan pengontrol pengontrol HoloLens telah berubah dari menjadi tidak tertangani WindowsMixedRealityController menjadi tidak tertangani WindowsMixedRealityGGVHand. Untuk mempertangungjawabkan hal ini, updater otomatis akan berjalan saat pertama kali Anda membuka profil ControllerMapping. Buka profil kustom setidaknya sekali setelah memutakhirkan ke 2.0.0 untuk memicu langkah migrasi satu kali ini.

InteractableHighlight

Kelas InteractableHighlight tidak digunakan lagi. Kelas InteractableOnFocus dan FocusInteractableStates aset harus digunakan sebagai gantinya. Untuk membuat aset baru Theme untuk InteractableOnFocus, klik kanan di jendela proyek dan pilih Buat> Mixed RealityTemaYang Dapat> Berinteraksi Toolkit>.

HandInteractionPanZoom

HandInteractionPanZoom telah dipindahkan ke namespace UI karena bukan komponen input. HandPanEventData juga telah dipindahkan ke namespace layanan ini, dan disederhanakan agar sesuai dengan data peristiwa UI lainnya.

Perubahan nama rakitan di 2.0.0

Dalam rilis 2.0.0, semua nama rakitan Mixed Reality Toolkit resmi dan file definisi perakitan terkait (.asmdef) telah diperbarui agar sesuai dengan pola berikut.

Microsoft.MixedReality.Toolkit[.<name>]

Dalam beberapa kasus, beberapa rakitan telah digabungkan untuk menciptakan kesatuan kontennya yang lebih baik. Jika proyek Anda menggunakan file .asmdef kustom, file tersebut mungkin perlu diperbarui.

Tabel berikut menjelaskan bagaimana nama file RC2 .asmdef dipetakan ke rilis 2.0.0. Semua nama rakitan cocok dengan nama file .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 Dihapus, gunakan 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