Поделиться через


Обновление с более ранних версий — MRTK2

Поиск текущей версии

Следуйте этим инструкциям, чтобы выяснить, какую версию MRTK вы используете в настоящее время.

  1. Открытие проекта MRTK в Unity
  2. Перейдите в папку MixedRealityToolkit в окне проекта.
  3. Откройте файл с именем Version

Если файл и папка выше не существуют, вы используете более новую версию MRTK. В этом случае попробуйте следующее:

  1. Перейдите в папку "Смешанная реальность Toolkit Foundation"
  2. Щелкните файл package.json, чтобы просмотреть предварительный просмотр в Unity, или откройте его в текстовом редакторе.
  3. Найдите строку со словом "version:"

Обновление до новой версии MRTK

Настоятельно рекомендуется запустить средство миграции после получения обновления MRTK для автоматического исправления и обновления от устаревших компонентов и адаптации к критическим изменениям. Средство миграции входит в пакет средств .

Приведенные ниже инструкции описывают путь обновления с 2.4.0 до 2.5.0. Если ваш проект находится в версии 2.3.0 или более ранней версии, ознакомьтесь с изменениями между версиями , чтобы понять путь обновления, или прочтите инструкции по обновлению по версии предыдущего выпуска.

Mixed Reality Feature Tool

Самый простой способ обновить MRTK до более новой версии — с помощью средства Смешанная реальность Feature Tool скачать последние пакеты и загрузить их непосредственно в проект Unity.

Если проект ранее использовал файлы ресурсов Unity (.unitypackage), см. эти инструкции.

Файлы ресурсов Unity (.unitypackage)

Другой путь обновления — вручную скачать пакеты MRTK Unity и применить их к проекту. Ознакомьтесь с приведенными ниже инструкциями.

  1. Сохраните копию текущего проекта на случай, если вы столкнулись с какими-либо ошибками в любой момент на этапах обновления.
  2. Закрытие Unity
  3. В папке Assets удалите следующие папки MRTK вместе с метафайлами (в проекте могут быть не все перечисленные папки).
    • MRTK/Core
    • MRTK/Примеры
    • MRTK и расширения
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Важно!

    Если в шейдеры MRTK были внесены изменения, создайте локальную резервную копию перед удалением папки MRTK/StandardAssets.

    • MRTK/Tools

    Важно!

    НЕ удаляйте папку MixedRealityToolkit.Generated или ее МЕТА-файл.

  4. Удаление папки "Библиотека"

    Важно!

    Некоторые средства Unity, такие как Unity Collab, сохраняют сведения о конфигурации в папке Библиотека. При использовании средства, которое делает это, сначала скопируйте папку данных средства из библиотеки перед удалением, а затем восстановите ее после повторного создания библиотеки.

  5. Повторное открытие проекта в Unity
  6. Импорт новых пакетов Unity
    • Foundation — сначала импортируйте этот пакет
    • Инструменты
    • (Необязательно) Расширения

    Примечание

    Если были установлены дополнительные расширения, их может потребоваться повторно импортировать.

    • (Необязательно) Примеры
  7. Закройте Unity и удалите папку Библиотека (сначала прочтите примечание ниже!). Этот шаг необходим для принудительного обновления базы данных ресурсов Unity и согласования существующих настраиваемых профилей.
  8. Запустите Unity и для каждой сцены в проекте
    • Удалите MixedRealityToolkit и MixedRealityPlayspace, если они есть, из иерархии. Это приведет к удалению main камеры, но она будет создана повторно на следующем шаге. Если какие-либо свойства main камеры были изменены вручную, их потребуется применить вручную после создания новой камеры.
    • Выберите MixedRealityToolkit —> Добавить в сцену и настроить.
    • Выберите MixedRealityToolkit —> Служебные программы —> Обновление —> Профили сопоставления контроллера (необходимо выполнить только один раз) — при этом все настраиваемые профили сопоставления контроллеров будут обновлены с обновленными осями и данными, оставляя пользовательские входные действия без изменений.
  9. Запустите средство миграции и запустите его в полном проекте , чтобы убедиться, что весь код обновлен до последней версии. Окно миграции содержит несколько различных обработчиков миграции, каждый из которых должен выполняться отдельно. Этот шаг включает в себя следующее:
    • Выберите первый обработчик миграции в раскрывающемся списке Выбор обработчика миграции .
    • Нажмите кнопку "Полный проект".
    • Нажмите кнопку "Добавить полный проект для миграции" (при этом будет проверяться весь проект на наличие объектов для миграции).
    • Нажмите кнопку "Миграция", которая должна быть включена при обнаружении каких-либо переносимых объектов.
    • Повторите предыдущие три шага для каждого обработчика миграции в раскрывающемся списке. (См. эту проблему , посвященную работе, которая может быть выполнена для упрощения процесса миграции в будущем выпуске.

Переход с файлов ресурсов Unity на Смешанная реальность Feature Tool

Переход с файлов ресурсов Unity на пакеты средств Смешанная реальность feature tool обеспечивает ряд преимуществ.

  • Упрощение обновления
  • Более быстрое время компиляции
  • Меньше проектов в решении Visual Studio

Для перехода на использование Смешанная реальность Feature Tool требуется однократный набор действий вручную.

  1. Сохраните копию текущего проекта.
  2. Закрытие Unity
  3. В папке Assets удалите следующие папки MRTK вместе с метафайлами (в проекте могут быть не все перечисленные папки).
    • MRTK/Core
    • MRTK/Примеры
    • MRTK и расширения
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Важно!

    Если в шейдеры MRTK были внесены изменения, создайте локальную резервную копию перед удалением папки MRTK/StandardAssets.

    • MRTK/Tools

    Важно!

    НЕ удаляйте папку MixedRealityToolkit.Generated или ее МЕТА-файл.

  4. Удаление папки "Библиотека"

    Важно!

    Некоторые средства Unity, такие как Unity Collab, сохраняют сведения о конфигурации в папке Библиотека. При использовании средства, которое делает это, сначала скопируйте папку данных средства из библиотеки перед удалением, а затем восстановите ее после повторного создания библиотеки.

  5. Повторное открытие проекта в Unity

После выполнения предыдущих шагов запустите средство Смешанная реальность Feature Tool и импортируйте нужную версию Смешанная реальность Toolkit.

Обновление версии 2.3.0 до версии 2.4.0

Изменения APIпереименований папок

Переименование папок в версии 2.4.0

Папки MixedRealityToolkit были переименованы и перемещены в общую иерархию в версии 2.4. Если приложение использует жестко заданные пути к ресурсам MRTK, их необходимо обновить в соответствии со следующей таблицей.

Предыдущая папка Создать папку
MixedRealityToolkit; MRTK/Core
MixedRealityToolkit.Examples MRTK и примеры
MixedRealityToolkit.Extensions MRTK/Расширения
MixedRealityToolkit.Providers MRTK/Providers
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Службы
MixedRealityToolkit.Tests MRTK и тесты
MixedRealityToolkit.Tools MRTK/Tools

Важно!

содержит MixedRealityToolkit.Generated файлы, созданные клиентом, и остается без изменений.

Настройка взгляда в версии 2.4.0

Эта версия MRTK изменяет действия, необходимые для настройки взгляда. Флажок IsEyeTrackingEnabled можно найти в параметрах взгляда профиля указателя ввода. Установите этот флажок, чтобы включить взгляд на основе взгляда, а не взгляд на основе головы по умолчанию.

Дополнительные сведения об этих изменениях и полные инструкции по настройке отслеживания взгляда см . в этой статье.

Поведение указателя взгляда в версии 2.4.0

Поведение указателя взгляда по умолчанию было изменено в соответствии с поведением указателя взгляда по умолчанию. Указатель взгляда автоматически подавляется при обнаружении руки. Указатель взгляда снова станет видимым после фразы "Выбрать".

Подробные сведения о взгляде и настройке рук можно найти в статье о глазах и руках .

Изменения API в версии 2.4.0

Классы пользовательских контроллеров

Пользовательские классы контроллеров ранее должны были определить SetupDefaultInteractions(Handedness). Этот метод стал устаревшим в версии 2.4, так как параметр handedness был избыточным с собственной рукой класса контроллера. Новый метод не имеет параметров. Кроме того, многие классы контроллеров определяют это так же (AssignControllerMappings(DefaultInteractions);), поэтому полный вызов был рефакторингован BaseController в и сделал необязательным переопределение вместо обязательного.

Свойства взгляда

Свойство UseEyeTracking из GazeProvider реализации IMixedRealityEyeGazeProvider было переименовано в IsEyeTrackingEnabled.

Если вы сделали это ранее...

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

Сделайте это сейчас...

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

Свойства WindowsApiChecker

Следующие свойства WindowsApiChecker помечены как устаревшие. Используйте IsMethodAvailable, IsPropertyAvailable или IsTypeAvailable.

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

Добавлять свойства в WindowsApiChecker для будущих версий контракта API не планируется.

GltfMeshPrimitiveAttributes только для чтения

Примитивные атрибуты сетки gltf раньше были заданы. Теперь они доступны только для чтения. Их значения будут заданы один раз при десериализации.

Перенос значков настраиваемых кнопок

Ранее настраиваемые значки кнопок требовали назначения нового материала отрисовщику квадроцикла кнопки. Это больше не требуется, и мы рекомендуем перемещать текстуры пользовательских значков в IconSet. Существующие пользовательские материалы и значки сохраняются. Однако они будут менее оптимальными до обновления. Чтобы обновить ресурсы на всех кнопках в проекте до нового рекомендуемого формата, используйте ButtonConfigHelperMigrationHandler. (Смешанная реальность Toolkit -> Utilities -> Migration Window - Migration Window -> Migration Handler Selection -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Диалоговое окно обновления

Если значок не найден в наборе значков по умолчанию во время миграции, в MixedRealityToolkit.Generated/CustomIconSets будет создан пользовательский набор значков. В диалоговом окне будет указано, что это произошло.

Уведомление о пользовательском значке

Обновление версии 2.2.0 до версии 2.3.0

Изменения API в версии 2.3.0

ControllerPoseSynchronizer

Частное поле ControllerPoseSynchronizer.handedness помечено как устаревшее. Это должно иметь минимальное влияние на приложения, так как поле невидимо за пределами своего класса.

Метод задания свойства Public ControllerPoseSynchronizer.Handedness удален (No 7012).

MSBuild для Unity

В этой версии MRTK используется более новая версия MSBuild для Unity, чем в предыдущих выпусках. Если при загрузке проекта более старая версия указана в манифесте диспетчера пакетов Unity, появится диалоговое окно конфигурации с флажом Включить MSBuild для Unity. При применении будет выполнено обновление.

ScriptingUtilities

Класс ScriptingUtilities помечен как устаревший и заменен на ScriptUtilities в сборке Microsoft.MixedReality.Toolkit.Editor.Utilities. Новый класс уточняет предыдущее поведение и добавляет поддержку удаления определений скриптов.

Хотя существующий код будет продолжать функционировать в версии 2.3.0, рекомендуется выполнить обновление до нового класса.

ShellHandRayPointer

Элементы lineRendererSelected и lineRendererNoTarget класса ShellHandRayPointer были заменены lineMaterialSelected и lineMaterialNoTarget соответственно (No 6863).

Замените lineRendererSelected на lineMaterialSelected и (или) lineRendererNoTarget на lineMaterialNoTarget, чтобы устранить ошибки компиляции.

Пространственный наблюдатель StartupBehavior

Пространственные наблюдатели, созданные BaseSpatialObserver на основе класса , теперь учитывают значение StartupBehavior при повторном включении (No 6919).

Для использования этого исправления не требуется никаких изменений.

Обновлены заготовки элемента управления UX для использования PressableButton

Следующие заготовки теперь используют компонент PressableButton вместо TouchHandler для ближнего взаимодействия (7070).

  • AnimationButton
  • Кнопка
  • ButtonHoloLens1
  • ButtonHoloLens1Переключение
  • CheckBox
  • RadialSet
  • ToggleButton
  • ToggleSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Из-за этого изменения может потребоваться обновление кода приложения.

Пространство имен WindowsMixedRealityUtilities

Пространство имен WindowsMixedRealityUtilities изменилось с Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input на Microsoft.MixedReality.Toolkit.WindowsMixedReality (No 6863).

Обновите инструкции #using, чтобы устранить ошибки компиляции.

Обновление версии 2.1.0 до 2.2.0

Изменения API в версии 2.2.0

IMixedRealityBoundarySystem.Contains

Этот метод ранее принимал определенное экспериментальное перечисление, определенное Unity. Теперь он принимает перечисление, определенное MRTK, которое идентично перечислению Unity. Это изменение помогает подготовить MRTK для будущих API границ Unity.

MixedRealityServiceProfileAttribute

Чтобы лучше описать требования к поддержке профиля, в MixedRealityServiceProfileAttribute добавлена необязательная коллекция исключенных типов. В рамках этого изменения свойство ServiceType было изменено с Type на Type[] и переименовано в RequiredTypes.

Также добавлено второе свойство ExcludedTypes.

Обновление 2.0.0 до 2.1.0

Изменения API в версии 2.1.0

BaseNearInteractionTouchable

Объект BaseNearInteractionTouchable был изменен, чтобы пометить OnValidate метод как виртуальный. Классы, расширяющие BaseNearInteractionTouchable (например, NearInteractionTouchableUnityUI), были обновлены в соответствии с этим изменением.

ColliderNearInteractionTouchable

Класс ColliderNearInteractionTouchable не рекомендуется к использованию. Обновите ссылки на код, чтобы использовать BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Добавлено

IMixedRealityMouseDeviceManager добавлены CursorSpeed свойства и WheelSpeed . Эти свойства позволяют приложениям указать значение множителя, на которое будет масштабироваться скорость курсора и колесика соответственно.

Это критическое изменение, которое требует изменения существующих реализаций диспетчера устройств мыши.

Примечание

Это изменение обратно несовместимо с версией 2.0.0.

Не рекомендуется

Свойство MouseInputProfile помечено как устаревшее и будет удалено из будущей версии Microsoft Смешанная реальность Toolkit. Рекомендуется, чтобы код приложения больше не использовал это свойство.

Интерактивный объект

Следующие методы и свойства устарели и будут удалены из будущей версии Microsoft Смешанная реальность Toolkit. Рекомендуется обновить код приложения согласно рекомендациям, содержащимся в атрибуте Устаревшее и отображаемом в консоли.

  • 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 был добавлен и теперь выступает в качестве базового класса для NearInteractionTouchable и NearInteractionTouchableUnityUI.

Изменения профиля в версии 2.1.0

Профиль отслеживания рук

Сетка рук и совместные визуализации теперь имеют отдельные параметры редактора и проигрывателя. Профиль отслеживания рук обновлен, чтобы разрешить для этих визуализаций значение ; Ничего, все, редактор или проигрыватель.

Режимы визуализации рук

Для правильной работы с версией 2.1.0 может потребоваться обновить настраиваемые профили отслеживания рук.

Примечание

Это изменение обратно несовместимо с версией 2.0.0.

Профиль имитации входных данных

Система имитации ввода была обновлена, что изменяет несколько параметров в профиле имитации входных данных. Некоторые изменения не могут быть перенесены автоматически, и пользователи могут обнаружить, что профили используют значения по умолчанию.

  1. Все привязки KeyCode и кнопки мыши в профиле были заменены универсальной KeyBinding структурой, в которой хранится тип привязки (ключ или мышь), а также фактический код привязки (keyCode или номер кнопки мыши соответственно). У структуры есть собственный инспектор, который позволяет унифицировать отображение и предлагает средство автоматической привязки для быстрой настройки привязок ключей путем нажатия соответствующей клавиши вместо выбора из огромного раскрывающегося списка.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle Ранее был включен в перечисление MouseLookButton как InputSimulationMouseButton.Focused, теперь это отдельный параметр. Если этот параметр включен, камера будет продолжать вращаться с помощью мыши после отпускания кнопки, пока не будет нажата escape-клавиша.

  3. HandDepthMultiplier Значение по умолчанию было снижено с 0,1 до 0,03, чтобы учесть некоторые изменения в моделировании ввода. Если камера перемещается слишком быстро при прокрутке, попробуйте уменьшить это значение.

  4. Клавиши для поворота рук были удалены, вращение рук теперь контролируется мышью. Удерживая HandRotateButton (CTRL) вместе с клавишей управления левой или правой рукой (LShift/SPACE), можно включить поворот руки.

  5. В списке осей входных данных появилась новая ось UpDown. Это управляет перемещением камеры по вертикали и по умолчанию использует клавиши Q/E, а также кнопки триггера контроллера.

Дополнительные сведения об этих изменениях см. в статье о службе имитации входных данных .

Профиль поставщика данных мыши

Профиль поставщика данных мыши обновлен для предоставления новых CursorSpeed свойств и WheelSpeed . Существующие настраиваемые профили будут автоматически предоставлять значения по умолчанию. При сохранении профиля эти новые значения будут сохранены.

Профиль сопоставления контроллера

Некоторые оси и типы входных данных были обновлены в версии 2.1.0, особенно на платформе OpenVR. При обновлении обязательно выберите MixedRealityToolkit —> Служебные программы —> Обновление —> профили сопоставления контроллера . Это приведет к обновлению всех настраиваемых профилей сопоставления контроллеров с обновленными осями и данными, при этом ваши назначаемые пользователем действия ввода останутся без изменений.

Обновление ВЕРСИИ-кандидата 2 до версии 2.0.0

В период между выпусками RC2 и 2.0.0 Microsoft Смешанная реальность Toolkit были внесены изменения, которые могут повлиять на существующие проекты. В этом документе описаны эти изменения и способы обновления проектов до выпуска 2.0.0.

Изменения API в версии 2.0.0

С момента выпуска RC2 произошло несколько изменений API, включая некоторые из них, которые могут нарушить существующие проекты. В следующих разделах описаны изменения, произошедшие между выпусками RC2 и 2.0.0.

MixedRealityToolkit;

Следующие открытые свойства объекта MixedRealityToolkit устарели.

  • RegisteredMixedRealityServices больше не содержит коллекцию зарегистрированных служб расширений и поставщиков данных.

Чтобы получить доступ к службам расширений, используйте MixedRealityServiceRegistry.TryGetService<T>. Чтобы получить доступ к поставщикам данных, приведите экземпляр службы к IMixedRealityDataProviderAccess и используйте GetDataProvider<T>.

Используйте MixedRealityServiceRegistry или CoreServices вместо этого для следующих устаревших свойств.

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

CoreServices

Класс CoreServices является заменой статических системных методов доступа (например, BoundarySystem), найденных в объекте MixedRealityToolkit .

Важно!

Системные MixedRealityToolkit методы доступа устарели в версии 2.0.0 и будут удалены в следующем выпуске MRTK.

В следующем примере кода показан старый и новый шаблоны.

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

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

Использование нового класса CoreSystem гарантирует, что код приложения не потребуется обновлять, если вы измените приложение на использование другого регистратора служб (например, одного из экспериментальных диспетчеров служб).

IMixedRealityRaycastProvider

С добавлением IMixedRealityRaycastProvider профиль конфигурации входной системы был изменен. Если у вас есть пользовательский профиль, при запуске приложения могут возникнуть ошибки на следующем рисунке.

Выбор поставщика Raycast 1

Чтобы устранить эти проблемы, добавьте экземпляр IMixedRealityRaycastProvider в профиль системы ввода.

Выбор поставщика Raycast 2

Система событий

  • Старые IMixedRealityEventSystem методы Register API и Unregister помечены как устаревшие. Они сохраняются для обеспечения обратной совместимости.
  • InputSystemGlobalListener помечен как устаревший. Его функциональность не изменилась.
  • BaseInputHandler Базовый класс был изменен с InputSystemGlobalListener на InputSystemGlobalHandlerListener. Это критическое изменение для всех потомков BaseInputHandler.

Мотивация изменений

Старый API Register системы событий и Unregister потенциально может вызвать несколько проблем в среде выполнения, main:

  • Если компонент регистрирует глобальные события, он будет получать глобальные входные события всех типов.
  • Если один из компонентов объекта регистрирует глобальные входные события, все компоненты этого объекта будут получать глобальные входные события всех типов.
  • Если два компонента одного объекта регистрируются в глобальных событиях, а затем один отключается во время выполнения, второй перестает получать глобальные события.

Новый API RegisterHandler и UnregisterHandler:

  • Предоставляет явный и детализированный контроль над тем, какие события ввода следует прослушивать глобально, а какие должны быть сосредоточены.
  • Позволяет нескольким компонентам одного объекта прослушивать глобальные события независимо друг от друга.

Как осуществить перенос

  • Если вы ранее вызывали Register/Unregister API непосредственно, замените эти вызовы вызовами .RegisterHandler/UnregisterHandler Используйте интерфейсы обработчиков, которые вы реализуете в качестве универсальных параметров. Если вы реализуете несколько интерфейсов и несколько из них прослушивают глобальные события ввода, вызовите RegisterHandler несколько раз.
  • Если вы наследовали от InputSystemGlobalListener, измените наследование на InputSystemGlobalHandlerListener. Реализуйте RegisterHandlers и UnregisterHandlers абстрактные методы. В реализации вызовите inputSystem.RegisterHandler (inputSystem.UnregisterHandler), чтобы зарегистрировать во всех интерфейсах обработчика, для которого требуется прослушивать глобальные события.
  • Если вы наследовали от BaseInputHandler, реализуйте RegisterHandlers и абстрактные методы (то же, что и UnregisterHandlers для InputSystemGlobalListener).

Примеры миграции

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

Отслеживание пространственного положения

Интерфейсы IMixedRealitySpatialAwarenessSystem и IMixedRealitySpatialAwarenessObserver внесены несколько критических изменений, как описано ниже.

Изменения

Следующие методы были переименованы, чтобы лучше описать их использование.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent был переименован в , IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent чтобы уточнить его использование.

Добавления

На основе отзывов клиентов добавлена поддержка простого удаления ранее наблюдаемых данных пространственной осведомленности.

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

Решатели

Некоторые компоненты решателя и класс диспетчера SolverHandler изменились для исправления различных ошибок и для более интуитивно понятного использования.

SolverHandler

  • Класс больше не распространяется на ControllerFinder
  • TrackedObjectToReference свойство public устарело и было переименовано в TrackedTargetType
  • TrackedObjectType не рекомендуется использовать значения левого & правого контроллера. Вместо этого используйте MotionController значения или HandJoint и обновите новое TrackedHandedness свойство, чтобы ограничить отслеживание левым или правым контроллером.

InBetween

  • TrackedObjectForSecondTransform свойство public устарело и было переименовано в SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() был удален. Чтобы обновить решатель, измените открытые свойства (т. е SecondTrackedObjectType. )

SurfaceMagnetism

  • MaxDistance свойство public устарело и было переименовано в MaxRaycastDistance
  • CloseDistance свойство public устарело и было переименовано в ClosestDistance
  • Значение по умолчанию для RaycastDirectionMode теперь TrackedTargetForward указывает, какие лучи передаются в направлении отслеживаемого целевого преобразования вперед
  • OrientationModeзначения перечисления и FullVertical были переименованы в TrackedTarget и SurfaceNormal соответственно
  • KeepOrientationVertical Свойство public было добавлено для управления тем, остается ли ориентация связанного объекта GameObject вертикальной

Кнопки

  • PressableButton Теперь свойство имеет DistanceSpaceMode значение по Local умолчанию. Это позволяет масштабировать кнопки при одновременном нажатии

Вырезка сферы

Интерфейс ClippingSphere изменился на зеркало API, найденных в ClippingBox и ClippingPlane.

Свойство Radius ClippingSphere теперь неявно вычисляется на основе масштаба преобразования. Перед разработчиками необходимо указать радиус ClippingSphere в инспекторе. Если вы хотите изменить радиус, просто обновите масштаб преобразования, как обычно.

NearInteractionTouchable и PokePointer

  • NearInteractionTouchable больше не обрабатывает касание холста пользовательского интерфейса Unity. Класс NearInteractionTouchableUnityUI необходимо использовать для сенсорных элементов пользовательского интерфейса Unity.
  • ColliderNearInteractionTouchable — это новый базовый класс для сенсорных модулей на основе коллайдеров, т. е. всех сенсорных, кроме NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront перемещен и переименован в PokePointer.TouchableDistance Это расстояние, с которым PokePointer может взаимодействовать с сенсорными элементами. Ранее у каждого касаемого объекта было собственное максимальное расстояние взаимодействия, но теперь это определяется в PokePointer, что обеспечивает лучшую оптимизацию.
  • BaseNearInteractionTouchable.DistBack переименован в PokeThreshold. Это дает понять, что PokeThreshold является аналогом DebounceThreshold. Сенсорный активируется при пересечении PokeThreshold и освобождается при пересечении DebounceThreshold.

ReadOnlyAttribute

Пространство Microsoft.MixedReality.Toolkit имен добавлено в ReadOnlyAttribute, BeginReadOnlyGroupAttributeи EndReadOnlyGroupAttribute.

PointerClickHandler

Класс PointerClickHandler не рекомендуется к использованию. PointerHandler Вместо этого следует использовать , он предоставляет те же функциональные возможности.

Поддержка кликера HoloLens

Сопоставления контроллеров HoloLens превратились из необработаемых в необработаемые WindowsMixedRealityControllerWindowsMixedRealityGGVHand. Чтобы учесть это, автоматическое средство обновления будет запускаться при первом открытии профиля ControllerMapping. Откройте все настраиваемые профили хотя бы один раз после обновления до версии 2.0.0, чтобы активировать этот шаг однократной миграции.

InteractableHighlight

Класс InteractableHighlight не рекомендуется к использованию. Вместо InteractableOnFocus этого следует использовать класс и FocusInteractableStates ресурс. Чтобы создать ресурс Theme для , щелкните правой InteractableOnFocusкнопкой мыши в окне проекта и выберите Create Смешанная реальность ToolkitInteractable>Theme (Создать>Смешанная реальность Набор средств>.

HandInteractionPanZoom

HandInteractionPanZoom был перемещен в пространство имен пользовательского интерфейса, так как он не был входным компонентом. HandPanEventData также был перемещен в это пространство имен и упрощен для соответствия другим данным событий пользовательского интерфейса.

Изменения имени сборки в версии 2.0.0

В выпуске 2.0.0 все официальные имена сборок набора средств Смешанная реальность и связанные с ними файлы определения сборки (ASMDEF) были обновлены в соответствии со следующим шаблоном.

Microsoft.MixedReality.Toolkit[.<name>]

В некоторых случаях было объединено несколько сборок, чтобы создать лучшее единство их содержимого. Если в проекте используются пользовательские ASMDEF-файлы, их может потребоваться обновить.

В следующих таблицах описано, как имена asMDEF-файлов RC2 сопоставляются с выпуском 2.0.0. Все имена сборок соответствуют имени файла 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 Удалено, используйте 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