以前のバージョンからの更新 — MRTK2

現在のバージョンの確認

次の手順に従って、現在使用している MRTK のバージョンを確認します。

  1. Unity で MRTK プロジェクトを開きます
  2. [Project] (プロジェクト) ウィンドウで "MixedRealityToolkit" フォルダーに移動します
  3. "Version" という名前のファイルを開きます

上記のファイルとフォルダーが存在しない場合は、新しいバージョンの MRTK を使用しています。 その場合は、次の操作を試してください。

  1. "Mixed Reality Toolkit Foundation" フォルダーに移動します
  2. "package.json" をクリックして Unity でプレビューを表示するか、テキスト エディターを使用して開きます
  3. "version:" という単語が含まれた行を探します

新しいバージョンの MRTK へのアップグレード

非推奨となったコンポーネントから自動修正してアップグレードし、破壊的変更に合わせて調整するために、"MRTK の更新プログラムの取得後に移行ツールを実行することを強くお勧めします"。 移行ツールは、Tools パッケージに含まれています。

以下の手順では、2.4.0 から 2.5.0 へのアップグレード パスについて説明します。 プロジェクトで 2.3.0 以前を使用している場合は、引き続きバージョン間の変更に関する記事を読んでアップグレード パスを理解するか、以前のリリースの手順を読んでバージョンごとのアップグレードを実行してください。

Mixed Reality Feature Tool

MRTK を新しいバージョンの MRTK にアップグレードする最も簡単な方法は、Mixed Reality Feature Tool を使用して最新のパッケージをダウンロードし、Unity プロジェクトに直接読み込むことです。

プロジェクトで以前に Unity のアセット (.unitypackage) ファイルが使用されていた場合は、こちらの手順を参照してください。

Unity のアセット (.unitypackage) ファイル

もう 1 つのアップグレード パスでは、MRTK Unity パッケージを手動でダウンロードしてプロジェクトに適用します。 以下の手順を参照してください。

  1. アップグレード手順のいずれかの時点で思わぬ障害が発生した場合に備えて、現在のプロジェクトのコピーを保存します。
  2. Unity を閉じます
  3. Assets フォルダー内で、次の MRTK フォルダーとその .meta ファイルを削除します (プロジェクトには、一覧表示されているすべてのフォルダーが含まれていない場合があります)。
    • MRTK/Core
    • MRTK/Examples
    • MRTK/Extensions
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    重要

    MRTK シェーダーに変更が加えられていた場合は、MRTK/StandardAssets フォルダーを削除する前にローカル バックアップを作成します

    • MRTK/Tools

    重要

    MixedRealityToolkit.Generated フォルダー、またはその .meta ファイルは削除しないでください。

  4. Library フォルダーを削除します

    重要

    Unity Collab などの一部のツールでは、構成情報が Library フォルダーに保存されます。 このようなツールを使用している場合は、まず、削除する前に Library フォルダーからツールのデータをコピーし、Library を再生成した後でそれを復元します。

  5. Unity でプロジェクトを再度開きます
  6. 新しい Unity パッケージをインポートします
    • Foundation - "このパッケージを最初にインポートします"
    • ツール
    • (省略可能) Extensions

    Note

    追加の拡張機能がインストールされていた場合は、再インポートが必要な場合があります。

    • (省略可能) Examples
  7. Unity を閉じて、Library フォルダーを削除します (最初に下記の注意をお読みください)。 この手順は、Unity でそのアセット データベースを更新し、既存のカスタム プロファイルを調整するために必要です。
  8. Unity を起動し、プロジェクト内のシーンごとに、
    • MixedRealityToolkitMixedRealityPlayspace (存在する場合) を階層から削除します。 これによりメイン カメラが削除されますが、次の手順で再作成されます。 メイン カメラのプロパティを手動で変更している場合は、新しいカメラが作成された後に、これらのプロパティを手動で再適用する必要があります。
    • [MixedRealityToolkit] -> [Add to Scene and Configure] (シーンに追加して構成) を選択します。
    • [MixedRealityToolkit] -> [Utilities] (ユーティリティ) -> [Update] (更新) -> [Controller Mapping Profiles] (コントローラー マッピング プロファイル) を選択します (1 回だけ実行する必要があります)。これにより、更新された軸とデータでカスタム コントローラー マッピング プロファイルが更新されますが、カスタム割り当ての入力アクションはそのままになります。
  9. 移行ツールを実行し、"フル プロジェクト" でツールを実行して、すべてのコードが確実に最新版に更新されるようにします。 [移行] ウィンドウには、さまざまな移行ハンドラーが含まれています。それらは、それぞれ独自に実行する必要があります。 この手順では、次のことを実行します。
    • [Migration Handler Selection] (移行ハンドラーの選択) ドロップダウンから最初の移行ハンドラーを選択します。
    • [Full Project] (フル プロジェクト) ボタンをクリックします。
    • [Add full project for migration] (移行のためにフル プロジェクトを追加) ボタンをクリックします (これにより、移行するオブジェクトについてプロジェクト全体がスキャンされます)。
    • [Migrate] (移行) ボタンをクリックします。これは、移行可能なオブジェクトが検出された場合、有効になっています。
    • ドロップダウン リスト内の各移行ハンドラーに対して、前の 3 つの手順を繰り返します。 (今後のリリースでこの移行プロセスを簡略化するために実行できる作業については、こちらのイシューを参照してください)。

Unity アセット ファイルから Mixed Reality Feature Tool への切り替え

Unity アセット ファイルから Mixed Reality Feature Tool パッケージに切り替えると、いくつかの利点があります。

  • 更新が容易になる
  • コンパイル時間が短縮される
  • Visual Studio ソリューション内のプロジェクト数が削減される

Mixed Reality Feature Tool を使用するように変更するには、手動の手順を 1 回だけ実行する必要があります。

  1. 現在のプロジェクトのコピーを保存します。
  2. Unity を閉じます
  3. Assets フォルダー内で、次の MRTK フォルダーとその .meta ファイルを削除します (プロジェクトには、一覧表示されているすべてのフォルダーが含まれていない場合があります)。
    • MRTK/Core
    • MRTK/Examples
    • MRTK/Extensions
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    重要

    MRTK シェーダーに変更が加えられていた場合は、MRTK/StandardAssets フォルダーを削除する前にローカル バックアップを作成します

    • MRTK/Tools

    重要

    MixedRealityToolkit.Generated フォルダー、またはその .meta ファイルは削除しないでください。

  4. Library フォルダーを削除します

    重要

    Unity Collab などの一部のツールでは、構成情報が Library フォルダーに保存されます。 このようなツールを使用している場合は、まず、削除する前に Library フォルダーからツールのデータをコピーし、Library を再生成した後でそれを復元します。

  5. Unity でプロジェクトを再度開きます

前の手順を実行したら、Mixed Reality機能ツールを実行し、目的のバージョンの Mixed Reality Toolkit をインポートします。

2.3.0 から 2.4.0 への更新

フォルダー名の変更API の変更

2.4.0 でのフォルダー名の変更

バージョン 2.4 では、MixedRealityToolkit フォルダーの名前が変更され、共通階層に移動されました。 アプリケーションで、MRTK リソースへのハード コードされたパスが使用されている場合は、次の表に従って更新する必要があります。

前のフォルダー [新しいフォルダー]
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Examples
MixedRealityToolkit.Extensions MRTK/Extensions
MixedRealityToolkit.Providers MRTK/Providers
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Services
MixedRealityToolkit.Tests MRTK/Tests
MixedRealityToolkit.Tools MRTK/Tools

重要

MixedRealityToolkit.Generated には、お客様によって生成されたファイルが含まれており、変更されません。

2.4.0 での目の視線入力の設定

このバージョンの MRTK では、目の視線入力の設定に必要な手順が変更されています。 'IsEyeTrackingEnabled' チェックボックスは、入力ポインター プロファイルの視線入力設定にあります。 このボックスをオンにすると、既定の頭をベースとした視線入力ではなく、目をベースとした視線入力が有効になります。

これらの変更の詳細と、アイ トラッキング設定の詳しい手順については、アイ トラッキングに関する記事を参照してください。

2.4.0 での目の視線入力ポインターの動作

目の視線入力での既定ポインター動作が、頭の視線入力での既定ポインター動作に一致するように変更されました。 目の視線入力ポインターは、ハンドが検出されると自動的に抑制されます。 目の視線入力ポインターは、"Select" (選択) と言うと再び表示されます。

視線入力とハンドの設定の詳細については、目とハンドに関する記事を参照してください。

2.4.0 での API の変更

カスタム コントローラー クラス

カスタム コントローラー クラスでは、以前は SetupDefaultInteractions(Handedness) を定義する必要がありました。 2.4 では、コントローラー クラスの独自の Handedness によって Handedness パラメーターが冗長になったため、このメソッドは廃止されました。 新しいメソッドにはパラメーターはありません。 さらに、多くのコントローラー クラスでこれが同じ方法で定義されている (AssignControllerMappings(DefaultInteractions);) ため、完全な呼び出しは BaseController にリファクタリングされ、必須ではなく、オプションのオーバーライドになりました。

目の視線入力プロパティ

IMixedRealityEyeGazeProviderGazeProvider 実装の UseEyeTracking プロパティは、IsEyeTrackingEnabled に名前変更されました。

以前このようにしていた場合...

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

現在はこのようにします...

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

WindowsApiChecker プロパティ

次の WindowsApiChecker プロパティは廃止としてマークされています。 IsMethodAvailableIsPropertyAvailable、または IsTypeAvailable を使用してください。

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

今後の API コントラクト バージョンについては、WindowsApiChecker にプロパティを追加する予定はありません。

GltfMeshPrimitiveAttributes 読み取り専用

gltf メッシュ プリミティブ属性は設定可能でしたが、現在は読み取り専用になりました。 これらの値は、逆シリアル化時に 1 回設定されます。

カスタム ボタン アイコンの移行

以前、カスタム ボタン アイコンでは、ボタンの quad レンダラーに新しい素材を割り当てる必要がありました。 これは不要になったので、カスタム アイコンのテクスチャを IconSet に移動することをお勧めします。 既存のカスタム素材とアイコンは保持されます。 ただし、それらはアップグレードされるまでは最適ではありません。 プロジェクト内にあるすべてのボタンのアセットを推奨される新しい形式にアップグレードするには、ButtonConfigHelperMigrationHandler を使用します。 ([Mixed Reality Toolkit] -> [Utilities] (ユーティリティ) -> [Migration] (移行) ウィンドウ -> [Migration Handler Selection] (移行ハンドラーの選択) -> [Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler])

アップグレード ウィンドウのダイアログ

移行中に既定のアイコン セット内でアイコンが見つからない場合は、MixedRealityToolkit.Generated/CustomIconSets にカスタム アイコン セットが作成されます。 これが行われたことがダイアログによって示されます。

カスタム アイコン通知

2.2.0 から 2.3.0 への更新

2.3.0 での API の変更

ControllerPoseSynchronizer

ControllerPoseSynchronizer.handedness プライベート フィールドは、廃止としてマークされています。 このフィールドはそのクラスの外では表示されないので、アプリケーションに対する影響は最小限です。

ControllerPoseSynchronizer.Handedness パブリック プロパティの setter は削除されました (#7012)。

MSBuild for Unity

このバージョンの MRTK では、以前のリリースよりも新しいバージョンの MSBuild for Unity が使用されています。 プロジェクトの読み込み中、Unity Package Manger マニフェストに古いバージョンが一覧表示される場合は、[Enable MSBuild for Unity] (MSBuild for Unity を有効にする) オプションがオンになった構成ダイアログが表示されます。 適用すると、アップグレードが実行されます。

ScriptingUtilities

ScriptingUtilities クラスは廃止としてマークされており、Microsoft.MixedReality.Toolkit.Editor.Utilities アセンブリで ScriptUtilities に置き換えられています。 新しいクラスでは、以前の動作が改善され、スクリプト定義を削除するためのサポートが追加されています。

既存のコードはバージョン 2.3.0 で引き続き機能しますが、新しいクラスに更新することをお勧めします。

ShellHandRayPointer

ShellHandRayPointer クラスの lineRendererSelected と lineRendererNoTarget メンバーは、それぞれ lineMaterialSelected と lineMaterialNoTarget に置き換えられました (#6863)。

コンパイル エラーを解決するには、lineRendererSelected を lineMaterialSelected に、lineRendererNoTarget を lineMaterialNoTarget に置き換えてください。

空間オブザーバーの StartupBehavior

BaseSpatialObserver クラスに基づいて構築された空間オブザーバーで、再有効化されたときに StartupBehavior の値が受け入れられるようになりました (#6919)。

この修正プログラムを利用するために変更は必要ありません。

PressableButton を使用するように更新された UX コントロール プレハブ

次のプレハブでは、近距離操作に対して、TouchHandler ではなく、PressableButton コンポーネントが使用されるようになりました (7070)。

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

この変更により、アプリケーション コードの更新が必要な場合があります。

WindowsMixedRealityUtilities 名前空間

WindowsMixedRealityUtilities の名前空間が、Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input から Microsoft.MixedReality.Toolkit.WindowsMixedReality に変更されました (#6863)。

コンパイル エラーを解決するために #using ステートメントを更新してください。

2.1.0 から 2.2.0 への更新

2.2.0 での API の変更

IMixedRealityBoundarySystem.Contains

このメソッドでは、以前、特定の、Unity で定義された試験的な列挙型を受け取っていました。 現在は、Unity の列挙型とまったく同じである、MRTK で定義された列挙型を受け取るようになりました。 この変更は、Unity の将来の境界 API 用に MRTK を準備するのに役立ちます。

MixedRealityServiceProfileAttribute

プロファイルをサポートするための要件をわかりやすく記述するために、MixedRealityServiceProfileAttribute が更新されて、除外された型の省略可能なコレクションが追加されました。 この変更の一環として、ServiceType プロパティが Type から Type[] に変更され、RequiredTypes に名前が変更されました。

2 つ目のプロパティである ExcludedTypes も追加されました。

2.0.0 から 2.1.0 への更新

2.1.0 での API の変更

BaseNearInteractionTouchable

OnValidate メソッドを仮想としてマークするように BaseNearInteractionTouchable が変更されました。 BaseNearInteractionTouchable を拡張するクラス (例: NearInteractionTouchableUnityUI) が、この変更を反映するように更新されました。

ColliderNearInteractionTouchable

ColliderNearInteractionTouchable クラスの使用は非推奨とされました。 BaseNearInteractionTouchable を使用するようにコード リファレンスを更新してください。

IMixedRealityMouseDeviceManager

"追加"

IMixedRealityMouseDeviceManagerCursorSpeedWheelSpeed プロパティが追加されました。 これらのプロパティを使用すると、アプリケーションは、それぞれカーソルとホイールの速度を速めたり遅くしたりする乗数値を指定できます。

これは、破壊的変更であり、既存のマウス デバイス マネージャーの実装を変更する必要があります。

Note

この変更には、バージョン 2.0.0 との下位互換性はありません。

"非推奨"

プロパティはMouseInputProfile古いものとしてマークされており、今後のバージョンの Microsoft Mixed Reality Toolkit から削除される予定です。 アプリケーション コードではこのプロパティを使用しないことが推奨されています。

対話可能

次のメソッドとプロパティは非推奨となり、今後のバージョンの Microsoft Mixed Reality Toolkit から削除される予定です。 Obsolete 属性に含まれており、コンソールに表示されるガイダンスに従ってアプリケーション コードを更新することをお勧めします。

  • 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 クラスが追加され、NearInteractionTouchableNearInteractionTouchableUnityUI の基底クラスとして機能するようになりました。

2.1.0 でのプロファイルの変更

ハンド トラッキング プロファイル

ハンド メッシュとジョイントの視覚化では、エディターとプレーヤーの設定が別々に行われるようになりました。 これらの視覚化を Nothing、Everything、Editor、または Player に設定できるように、ハンド トラッキング プロファイルが更新されました。

手の視覚化モード

カスタム ハンド トラッキング プロファイルは、バージョン 2.1.0 で正しく動作するように更新する必要がある場合があります。

Note

この変更には、バージョン 2.0.0 との下位互換性はありません。

入力シミュレーション プロファイル

入力シミュレーション システムがアップグレードされました。これにより、入力シミュレーション プロファイルのいくつかの設定が変更されます。 一部の変更は自動的に移行できず、ユーザーはプロファイルで既定値が使用されていることに気づく場合があります。

  1. プロファイル内のすべての KeyCode とマウス ボタンのバインドは、汎用の KeyBinding 構造体に置き換えられました。これには、バインディングの種類 (キーまたはマウス) と実際のバインド コード (KeyCode またはマウス ボタン番号) が格納されます。 この構造体には独自のインスペクターがあります。それを使用することで、統合表示が可能になります。また、大きなドロップダウン リストから選択するのではなく、それぞれのキーを押してキー バインドをすばやく設定する "自動バインド" ツールが提供されています。

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle は以前 MouseLookButton 列挙型に InputSimulationMouseButton.Focused として含まれていましたが、現在は別個のオプションになっています。 有効にすると、ボタンを離した後、エスケープ キーが押されるまで、カメラはマウスによって回転し続けます。

  3. 入力シミュレーションの一部の変更に対応するために、HandDepthMultiplier 既定値が 0.1 から 0.03 に下げられました。 スクロールしているときにカメラの動きが速すぎる場合は、この値を下げてみてください。

  4. ハンドを回転させるためのキーが削除されました。ハンドの回転もマウスで制御されるようになりました。 HandRotateButton (Ctrl) を左または右側の操作キー (左側の Shift または Space キー) と一緒に押すと、ハンドの回転が有効になります。

  5. 入力軸の一覧に、新しい軸 "UpDown" が導入されました。 これによって、カメラの垂直方向の動きが制御されます。既定では Q または E キーとコントローラーのトリガー ボタンが使用されます。

これらの変更の詳細については、入力シミュレーション サービスに関する記事を参照してください。

マウス データ プロバイダー プロファイル

マウス データ プロバイダー プロファイルが更新され、新しい CursorSpeedWheelSpeed プロパティが公開されました。 既存のカスタム プロファイルには、自動的に既定値が指定されます。 プロファイルを保存すると、これらの新しい値が保持されます。

コントローラー マッピング プロファイル

2.1.0 で、特に OpenVR プラットフォームに関連する一部の軸と入力の種類が更新されました。 アップグレード時には、[MixedRealityToolkit] -> [Utilities] (ユーティリティ) -> [Update] (更新) -> [Controller Mapping Profiles] (コントローラー マッピング プロファイル) を必ず選択してください。 これにより、カスタム割り当ての入力アクションをそのままにしながら、更新された軸とデータでカスタム コントローラー マッピング プロファイルが更新されます。

RC2 から 2.0.0 への更新

Microsoft Mixed Reality Toolkit の RC2 リリースと 2.0.0 リリースの間に、既存のプロジェクトに影響を与える可能性のある変更が行われました。 このドキュメントでは、これらの変更と、プロジェクトを 2.0.0 リリースに更新する方法について説明します。

2.0.0 での API の変更

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 クラスは、MixedRealityToolkit オブジェクトで検出される静的システム アクセサー (例: BoundarySystem) の代わりです。

重要

システム アクセサーは MixedRealityToolkit バージョン 2.0.0 で非推奨となり、MRTK の将来のリリースで削除される予定です。

次のコード例は、古いものと新しいパターンを示しています。

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

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

新しい CoreSystem クラスを使用すると、別のサービス レジストラー (例: 試験的なサービス マネージャーの 1 つなど) を使用するようにアプリケーションを変更した場合にアプリケーション コードの更新が必要なくなります。

IMixedRealityRaycastProvider

IMixedRealityRaycastProvider が追加されたため、入力システム構成プロファイルが変更されました。 カスタム プロファイルがある場合は、アプリケーションを実行したときに次の画像に示すエラーを受け取る可能性があります。

Raycast プロバイダー 1 の選択

これらを修正するには、入力システム プロファイルに IMixedRealityRaycastProvider インスタンスを追加してください。

Raycast プロバイダーの選択 2

イベント システム

  • IMixedRealityEventSystem の古い API メソッド RegisterUnregister は廃止としてマークされています。 これらは、旧バージョンとの互換性のために保持されています。
  • InputSystemGlobalListener は廃止としてマークされています。 その機能は変更されていません。
  • BaseInputHandler 基底クラスは、InputSystemGlobalListener から InputSystemGlobalHandlerListener に変更されました。 これは、BaseInputHandler のすべての子孫にとって破壊的変更です。

"変更の背後にある動機"

以前のイベント システム API RegisterUnregister により、実行時に複数の問題が発生する可能性があります。主なものは次のとおりです。

  • コンポーネントをグローバル イベントに登録すると、"すべての" 種類のグローバル入力イベントを受け取ることになります。
  • あるオブジェクト上のコンポーネントの 1 つをグローバル入力イベントに登録すると、このオブジェクト上のすべてのコンポーネントが、"すべての" 種類のグローバル入力イベントを受け取ります。
  • 同じオブジェクト上の 2 つのコンポーネントをグローバル イベントに登録し、その後、そのうちの 1 つを実行時に無効にすると、2 つ目でグローバル イベントの受信が停止されます。

新しい API RegisterHandlerUnregisterHandler:

  • どの入力イベントをグローバルにリッスンする必要があり、どれをフォーカスベースにするべきかを明示的にきめ細かく制御できます。
  • 同じオブジェクト上の複数のコンポーネントが、互いに独立してグローバル イベントをリッスンできます。

移行方法

  • 以前に Register/Unregister API を直接呼び出していた場合は、これらの呼び出しを RegisterHandler/UnregisterHandler への呼び出しに置き換えてください。 ジェネリック パラメーターとして実装するハンドラー インターフェイスを使用します。 複数のインターフェイスを実装しており、そのうちのいくつかでグローバル入力イベントをリッスンしている場合は、RegisterHandler を複数回呼び出します。
  • InputSystemGlobalListener から継承している場合は、継承を InputSystemGlobalHandlerListener に変更します。 RegisterHandlersUnregisterHandlers 抽象メソッドを実装します。 実装で inputSystem.RegisterHandler (inputSystem.UnregisterHandler) を呼び出して、グローバル イベントをリッスンするすべてのハンドラー インターフェイスに登録します。
  • BaseInputHandler から継承している場合は、RegisterHandlersUnregisterHandlers 抽象メソッドを実装します (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.CreateSpatialObjectParentIMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent に名前変更されました。

追加

お客様からのフィードバックに基づいて、以前に観察された空間認識データを簡単に削除するためのサポートが追加されました。

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

ソルバー

さまざまなバグを修正し、より直感的に使用できるように、一部のソルバー コンポーネントと SolverHandler マネージャー クラスが変更されました。

SolverHandler

  • ControllerFinder からクラスを拡張できなくなりました。
  • TrackedObjectToReference パブリック プロパティは非推奨となり、TrackedTargetType に名前が変更されました。
  • TrackedObjectType は、左 & 右側のコントローラー値を非推奨とします。 代わりに MotionController または HandJoint 値を使用し、トラッキングを左または右のコントローラーに制限するように新しい TrackedHandedness プロパティを更新します

InBetween

  • TrackedObjectForSecondTransform パブリック プロパティは非推奨となり、SecondTrackedObjectType に名前が変更されました。
  • AttachSecondTransformToNewTrackedObject() は削除されました。 ソルバーを更新するには、パブリック プロパティ (つまり SecondTrackedObjectType) を変更します。

SurfaceMagnetism

  • MaxDistance パブリック プロパティは非推奨となり、MaxRaycastDistance に名前が変更されました。
  • CloseDistance パブリック プロパティは非推奨となり、ClosestDistance に名前が変更されました。
  • RaycastDirectionMode の既定値は TrackedTargetForward になりました。これにより、前方の追跡対象ターゲット変換の方向にレイキャストが実行されます。
  • OrientationMode 列挙値の VerticalFull が、それぞれ TrackedTargetSurfaceNormal に名前変更されました。
  • 関連付けられた GameObject の方向を垂直のままにするかどうかを制御する KeepOrientationVertical パブリック プロパティが追加されました。

ボタン

  • PressableButton で、DistanceSpaceMode プロパティが既定値として Local に設定されるようになりました。 これにより、ボタンを押せる状態のまま拡大縮小できます。

Clipping Sphere

ClippingSphere インターフェイスは、ClippingBox と ClippingPlane で見つかった API をミラーリングするように変更されました。

ClippingSphere の Radius プロパティは、暗黙的に変換スケールに基づいて計算されるようになりました。 以前は、開発者がインスペクターで ClippingSphere の半径を指定する必要がありました。 半径を変更したい場合は、通常と同様に、変換の変換スケールを更新するだけです。

NearInteractionTouchable および PokePointer

  • NearInteractionTouchable では、Unity UI キャンバスのタッチが処理されなくなりました。 Unity UI のタッチ可能オブジェクトには、NearInteractionTouchableUnityUI クラスを使用する必要があります。
  • ColliderNearInteractionTouchable は、コライダーに基づくタッチ可能オブジェクト (NearInteractionTouchableUnityUI を除くすべてのタッチ可能オブジェクト) の新しい基底クラスです。
  • BaseNearInteractionTouchable.DistFront は移動され、PokePointer.TouchableDistance に名前変更されました。これは、PokePointer がタッチ可能オブジェクトを操作できる距離です。 以前は、それぞれのタッチ可能オブジェクトに独自の最大対話式操作距離がありましたが、現在、これは PokePointer に定義されるようになり、さらなる最適化が可能になりました。
  • BaseNearInteractionTouchable.DistBack が PokeThreshold に名前変更されました。これにより、PokeThreshold が DebounceThreshold に対応するものであることが明確になります。 タッチ可能オブジェクトは、PokeThreshold を超えるとアクティブ化され、DebounceThreshold を超えると解放されます。

ReadOnlyAttribute

Microsoft.MixedReality.Toolkit 名前空間が ReadOnlyAttributeBeginReadOnlyGroupAttribute、および EndReadOnlyGroupAttribute に追加されました。

PointerClickHandler

PointerClickHandler クラスの使用は非推奨とされました。 代わりに、PointerHandler を使用してください。同じ機能が提供されます。

HoloLens クリッカーのサポート

HoloLens クリッカーのコントローラー マッピングが、アンハンドの WindowsMixedRealityController からアンハンドの WindowsMixedRealityGGVHand に変更されました。 これを考慮して、ControllerMapping プロファイルを初めて開いたときに自動アップデーターが実行されます。 この 1 回だけの移行手順をトリガーするために、2.0.0 にアップグレードした後に少なくとも 1 回カスタム プロファイルを開いてください。

InteractableHighlight

InteractableHighlight クラスの使用は非推奨とされました。 代わりに、InteractableOnFocus クラスと FocusInteractableStates アセットを使用してください。 のInteractableOnFocusThemeしいアセットを作成するには、プロジェクト ウィンドウで右クリックし、[作成>Mixed Reality Toolkit>の対話可能な>テーマ] を選択します

HandInteractionPanZoom

HandInteractionPanZoom は入力コンポーネントではなかったため、UI 名前空間に移動されました。 HandPanEventData もこの名前空間に移動され、他の UI イベント データと対応するように簡略化されました。

2.0.0 でのアセンブリ名の変更

2.0.0 リリースでは、すべての公式の Mixed Reality Toolkit アセンブリ名と関連するアセンブリ定義 (.asmdef) ファイルが、次のパターンに合わせて更新されました。

Microsoft.MixedReality.Toolkit[.<name>]

場合によっては、内容の統一性を向上させるために、複数のアセンブリがマージされています。 プロジェクトでカスタム .asmdef ファイルが使用されている場合は、更新が必要な場合があります。

次の表では、RC2 の .asmdef ファイル名がどのように 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