Обновление с более ранних версий — MRTK2
- Обновление до новой версии MRTK
- С 2.3.0 по 2.4.0
- С 2.2.0 по 2.3.0
- С 2.1.0 по 2.2.0
- С 2.0.0 по 2.1.0
- RC2–2.0.0
Поиск текущей версии
Следуйте этим инструкциям, чтобы выяснить, какую версию MRTK вы используете в настоящее время.
- Открытие проекта MRTK в Unity
- Перейдите в папку MixedRealityToolkit в окне проекта.
- Откройте файл с именем Version
Если файл и папка выше не существуют, вы используете более новую версию MRTK. В этом случае попробуйте следующее:
- Перейдите в папку "Смешанная реальность Toolkit Foundation"
- Щелкните файл package.json, чтобы просмотреть предварительный просмотр в Unity, или откройте его в текстовом редакторе.
- Найдите строку со словом "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 и применить их к проекту. Ознакомьтесь с приведенными ниже инструкциями.
- Сохраните копию текущего проекта на случай, если вы столкнулись с какими-либо ошибками в любой момент на этапах обновления.
- Закрытие Unity
- В папке Assets удалите следующие папки MRTK вместе с метафайлами (в проекте могут быть не все перечисленные папки).
- MRTK/Core
- MRTK/Примеры
- MRTK и расширения
- MRTK/Providers
- MRTK/SDK
- MRTK/Services
- MRTK/StandardAssets
Важно!
Если в шейдеры MRTK были внесены изменения, создайте локальную резервную копию перед удалением папки MRTK/StandardAssets.
- MRTK/Tools
Важно!
НЕ удаляйте папку MixedRealityToolkit.Generated или ее МЕТА-файл.
- Удаление папки "Библиотека"
Важно!
Некоторые средства Unity, такие как Unity Collab, сохраняют сведения о конфигурации в папке Библиотека. При использовании средства, которое делает это, сначала скопируйте папку данных средства из библиотеки перед удалением, а затем восстановите ее после повторного создания библиотеки.
- Повторное открытие проекта в Unity
- Импорт новых пакетов Unity
- Foundation — сначала импортируйте этот пакет
- Инструменты
- (Необязательно) Расширения
Примечание
Если были установлены дополнительные расширения, их может потребоваться повторно импортировать.
- (Необязательно) Примеры
- Закройте Unity и удалите папку Библиотека (сначала прочтите примечание ниже!). Этот шаг необходим для принудительного обновления базы данных ресурсов Unity и согласования существующих настраиваемых профилей.
- Запустите Unity и для каждой сцены в проекте
- Удалите MixedRealityToolkit и MixedRealityPlayspace, если они есть, из иерархии. Это приведет к удалению main камеры, но она будет создана повторно на следующем шаге. Если какие-либо свойства main камеры были изменены вручную, их потребуется применить вручную после создания новой камеры.
- Выберите MixedRealityToolkit —> Добавить в сцену и настроить.
- Выберите MixedRealityToolkit —> Служебные программы —> Обновление —> Профили сопоставления контроллера (необходимо выполнить только один раз) — при этом все настраиваемые профили сопоставления контроллеров будут обновлены с обновленными осями и данными, оставляя пользовательские входные действия без изменений.
- Запустите средство миграции и запустите его в полном проекте , чтобы убедиться, что весь код обновлен до последней версии.
Окно миграции содержит несколько различных обработчиков миграции, каждый из которых должен выполняться отдельно. Этот шаг включает в себя следующее:
- Выберите первый обработчик миграции в раскрывающемся списке Выбор обработчика миграции .
- Нажмите кнопку "Полный проект".
- Нажмите кнопку "Добавить полный проект для миграции" (при этом будет проверяться весь проект на наличие объектов для миграции).
- Нажмите кнопку "Миграция", которая должна быть включена при обнаружении каких-либо переносимых объектов.
- Повторите предыдущие три шага для каждого обработчика миграции в раскрывающемся списке. (См. эту проблему , посвященную работе, которая может быть выполнена для упрощения процесса миграции в будущем выпуске.
Переход с файлов ресурсов Unity на Смешанная реальность Feature Tool
Переход с файлов ресурсов Unity на пакеты средств Смешанная реальность feature tool обеспечивает ряд преимуществ.
- Упрощение обновления
- Более быстрое время компиляции
- Меньше проектов в решении Visual Studio
Для перехода на использование Смешанная реальность Feature Tool требуется однократный набор действий вручную.
- Сохраните копию текущего проекта.
- Закрытие Unity
- В папке Assets удалите следующие папки MRTK вместе с метафайлами (в проекте могут быть не все перечисленные папки).
- MRTK/Core
- MRTK/Примеры
- MRTK и расширения
- MRTK/Providers
- MRTK/SDK
- MRTK/Services
- MRTK/StandardAssets
Важно!
Если в шейдеры MRTK были внесены изменения, создайте локальную резервную копию перед удалением папки MRTK/StandardAssets.
- MRTK/Tools
Важно!
НЕ удаляйте папку MixedRealityToolkit.Generated или ее МЕТА-файл.
- Удаление папки "Библиотека"
Важно!
Некоторые средства Unity, такие как Unity Collab, сохраняют сведения о конфигурации в папке Библиотека. При использовании средства, которое делает это, сначала скопируйте папку данных средства из библиотеки перед удалением, а затем восстановите ее после повторного создания библиотеки.
- Повторное открытие проекта в 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.
Профиль имитации входных данных
Система имитации ввода была обновлена, что изменяет несколько параметров в профиле имитации входных данных. Некоторые изменения не могут быть перенесены автоматически, и пользователи могут обнаружить, что профили используют значения по умолчанию.
Все привязки KeyCode и кнопки мыши в профиле были заменены универсальной
KeyBinding
структурой, в которой хранится тип привязки (ключ или мышь), а также фактический код привязки (keyCode или номер кнопки мыши соответственно). У структуры есть собственный инспектор, который позволяет унифицировать отображение и предлагает средство автоматической привязки для быстрой настройки привязок ключей путем нажатия соответствующей клавиши вместо выбора из огромного раскрывающегося списка.- FastControlKey
- ToggleLeftHandKey
- ToggleRightHandKey
- LeftHandManipulationKey
- RightHandManipulationKey
MouseLookToggle
Ранее был включен в перечислениеMouseLookButton
какInputSimulationMouseButton.Focused
, теперь это отдельный параметр. Если этот параметр включен, камера будет продолжать вращаться с помощью мыши после отпускания кнопки, пока не будет нажата escape-клавиша.HandDepthMultiplier
Значение по умолчанию было снижено с 0,1 до 0,03, чтобы учесть некоторые изменения в моделировании ввода. Если камера перемещается слишком быстро при прокрутке, попробуйте уменьшить это значение.Клавиши для поворота рук были удалены, вращение рук теперь контролируется мышью. Удерживая
HandRotateButton
(CTRL) вместе с клавишей управления левой или правой рукой (LShift/SPACE), можно включить поворот руки.В списке осей входных данных появилась новая ось 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 профиль конфигурации входной системы был изменен. Если у вас есть пользовательский профиль, при запуске приложения могут возникнуть ошибки на следующем рисунке.
Чтобы устранить эти проблемы, добавьте экземпляр IMixedRealityRaycastProvider в профиль системы ввода.
Система событий
- Старые
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
значения перечисления иFull
Vertical
были переименованы в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 превратились из необработаемых в необработаемые WindowsMixedRealityController
WindowsMixedRealityGGVHand
. Чтобы учесть это, автоматическое средство обновления будет запускаться при первом открытии профиля 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 |