以前のバージョンからの更新 — MRTK2
現在のバージョンの確認
次の手順に従って、現在使用している MRTK のバージョンを確認します。
- Unity で MRTK プロジェクトを開きます
- [Project] (プロジェクト) ウィンドウで "MixedRealityToolkit" フォルダーに移動します
- "Version" という名前のファイルを開きます
上記のファイルとフォルダーが存在しない場合は、新しいバージョンの MRTK を使用しています。 その場合は、次の操作を試してください。
- "Mixed Reality Toolkit Foundation" フォルダーに移動します
- "package.json" をクリックして Unity でプレビューを表示するか、テキスト エディターを使用して開きます
- "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 パッケージを手動でダウンロードしてプロジェクトに適用します。 以下の手順を参照してください。
- アップグレード手順のいずれかの時点で思わぬ障害が発生した場合に備えて、現在のプロジェクトのコピーを保存します。
- Unity を閉じます
- 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 ファイルは削除しないでください。
- Library フォルダーを削除します
重要
Unity Collab などの一部のツールでは、構成情報が Library フォルダーに保存されます。 このようなツールを使用している場合は、まず、削除する前に Library フォルダーからツールのデータをコピーし、Library を再生成した後でそれを復元します。
- Unity でプロジェクトを再度開きます
- 新しい Unity パッケージをインポートします
- Foundation - "このパッケージを最初にインポートします"
- ツール
- (省略可能) Extensions
Note
追加の拡張機能がインストールされていた場合は、再インポートが必要な場合があります。
- (省略可能) Examples
- Unity を閉じて、Library フォルダーを削除します (最初に下記の注意をお読みください)。 この手順は、Unity でそのアセット データベースを更新し、既存のカスタム プロファイルを調整するために必要です。
- Unity を起動し、プロジェクト内のシーンごとに、
- MixedRealityToolkit と MixedRealityPlayspace (存在する場合) を階層から削除します。 これによりメイン カメラが削除されますが、次の手順で再作成されます。 メイン カメラのプロパティを手動で変更している場合は、新しいカメラが作成された後に、これらのプロパティを手動で再適用する必要があります。
- [MixedRealityToolkit] -> [Add to Scene and Configure] (シーンに追加して構成) を選択します。
- [MixedRealityToolkit] -> [Utilities] (ユーティリティ) -> [Update] (更新) -> [Controller Mapping Profiles] (コントローラー マッピング プロファイル) を選択します (1 回だけ実行する必要があります)。これにより、更新された軸とデータでカスタム コントローラー マッピング プロファイルが更新されますが、カスタム割り当ての入力アクションはそのままになります。
- 移行ツールを実行し、"フル プロジェクト" でツールを実行して、すべてのコードが確実に最新版に更新されるようにします。
[移行] ウィンドウには、さまざまな移行ハンドラーが含まれています。それらは、それぞれ独自に実行する必要があります。 この手順では、次のことを実行します。
- [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 回だけ実行する必要があります。
- 現在のプロジェクトのコピーを保存します。
- Unity を閉じます
- 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 ファイルは削除しないでください。
- Library フォルダーを削除します
重要
Unity Collab などの一部のツールでは、構成情報が Library フォルダーに保存されます。 このようなツールを使用している場合は、まず、削除する前に Library フォルダーからツールのデータをコピーし、Library を再生成した後でそれを復元します。
- Unity でプロジェクトを再度開きます
前の手順を実行したら、Mixed Reality機能ツールを実行し、目的のバージョンの Mixed Reality Toolkit をインポートします。
2.3.0 から 2.4.0 への更新
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
にリファクタリングされ、必須ではなく、オプションのオーバーライドになりました。
目の視線入力プロパティ
IMixedRealityEyeGazeProvider
の GazeProvider
実装の UseEyeTracking
プロパティは、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
今後の 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
"追加"
IMixedRealityMouseDeviceManager
に CursorSpeed
と WheelSpeed
プロパティが追加されました。 これらのプロパティを使用すると、アプリケーションは、それぞれカーソルとホイールの速度を速めたり遅くしたりする乗数値を指定できます。
これは、破壊的変更であり、既存のマウス デバイス マネージャーの実装を変更する必要があります。
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
クラスが追加され、NearInteractionTouchable
と NearInteractionTouchableUnityUI
の基底クラスとして機能するようになりました。
2.1.0 でのプロファイルの変更
ハンド トラッキング プロファイル
ハンド メッシュとジョイントの視覚化では、エディターとプレーヤーの設定が別々に行われるようになりました。 これらの視覚化を Nothing、Everything、Editor、または Player に設定できるように、ハンド トラッキング プロファイルが更新されました。
カスタム ハンド トラッキング プロファイルは、バージョン 2.1.0 で正しく動作するように更新する必要がある場合があります。
Note
この変更には、バージョン 2.0.0 との下位互換性はありません。
入力シミュレーション プロファイル
入力シミュレーション システムがアップグレードされました。これにより、入力シミュレーション プロファイルのいくつかの設定が変更されます。 一部の変更は自動的に移行できず、ユーザーはプロファイルで既定値が使用されていることに気づく場合があります。
プロファイル内のすべての KeyCode とマウス ボタンのバインドは、汎用の
KeyBinding
構造体に置き換えられました。これには、バインディングの種類 (キーまたはマウス) と実際のバインド コード (KeyCode またはマウス ボタン番号) が格納されます。 この構造体には独自のインスペクターがあります。それを使用することで、統合表示が可能になります。また、大きなドロップダウン リストから選択するのではなく、それぞれのキーを押してキー バインドをすばやく設定する "自動バインド" ツールが提供されています。- FastControlKey
- ToggleLeftHandKey
- ToggleRightHandKey
- LeftHandManipulationKey
- RightHandManipulationKey
MouseLookToggle
は以前MouseLookButton
列挙型にInputSimulationMouseButton.Focused
として含まれていましたが、現在は別個のオプションになっています。 有効にすると、ボタンを離した後、エスケープ キーが押されるまで、カメラはマウスによって回転し続けます。入力シミュレーションの一部の変更に対応するために、
HandDepthMultiplier
既定値が 0.1 から 0.03 に下げられました。 スクロールしているときにカメラの動きが速すぎる場合は、この値を下げてみてください。ハンドを回転させるためのキーが削除されました。ハンドの回転もマウスで制御されるようになりました。
HandRotateButton
(Ctrl) を左または右側の操作キー (左側の Shift または Space キー) と一緒に押すと、ハンドの回転が有効になります。入力軸の一覧に、新しい軸 "UpDown" が導入されました。 これによって、カメラの垂直方向の動きが制御されます。既定では Q または E キーとコントローラーのトリガー ボタンが使用されます。
これらの変更の詳細については、入力シミュレーション サービスに関する記事を参照してください。
マウス データ プロバイダー プロファイル
マウス データ プロバイダー プロファイルが更新され、新しい CursorSpeed
と WheelSpeed
プロパティが公開されました。 既存のカスタム プロファイルには、自動的に既定値が指定されます。 プロファイルを保存すると、これらの新しい値が保持されます。
コントローラー マッピング プロファイル
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 が追加されたため、入力システム構成プロファイルが変更されました。 カスタム プロファイルがある場合は、アプリケーションを実行したときに次の画像に示すエラーを受け取る可能性があります。
これらを修正するには、入力システム プロファイルに IMixedRealityRaycastProvider インスタンスを追加してください。
イベント システム
IMixedRealityEventSystem
の古い API メソッドRegister
とUnregister
は廃止としてマークされています。 これらは、旧バージョンとの互換性のために保持されています。InputSystemGlobalListener
は廃止としてマークされています。 その機能は変更されていません。BaseInputHandler
基底クラスは、InputSystemGlobalListener
からInputSystemGlobalHandlerListener
に変更されました。 これは、BaseInputHandler
のすべての子孫にとって破壊的変更です。
"変更の背後にある動機"
以前のイベント システム API Register
と Unregister
により、実行時に複数の問題が発生する可能性があります。主なものは次のとおりです。
- コンポーネントをグローバル イベントに登録すると、"すべての" 種類のグローバル入力イベントを受け取ることになります。
- あるオブジェクト上のコンポーネントの 1 つをグローバル入力イベントに登録すると、このオブジェクト上のすべてのコンポーネントが、"すべての" 種類のグローバル入力イベントを受け取ります。
- 同じオブジェクト上の 2 つのコンポーネントをグローバル イベントに登録し、その後、そのうちの 1 つを実行時に無効にすると、2 つ目でグローバル イベントの受信が停止されます。
新しい 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
パブリック プロパティは非推奨となり、TrackedTargetType
に名前が変更されました。TrackedObjectType
は、左 & 右側のコントローラー値を非推奨とします。 代わりにMotionController
またはHandJoint
値を使用し、トラッキングを左または右のコントローラーに制限するように新しいTrackedHandedness
プロパティを更新します
InBetween
TrackedObjectForSecondTransform
パブリック プロパティは非推奨となり、SecondTrackedObjectType
に名前が変更されました。AttachSecondTransformToNewTrackedObject()
は削除されました。 ソルバーを更新するには、パブリック プロパティ (つまりSecondTrackedObjectType
) を変更します。
SurfaceMagnetism
MaxDistance
パブリック プロパティは非推奨となり、MaxRaycastDistance
に名前が変更されました。CloseDistance
パブリック プロパティは非推奨となり、ClosestDistance
に名前が変更されました。RaycastDirectionMode
の既定値はTrackedTargetForward
になりました。これにより、前方の追跡対象ターゲット変換の方向にレイキャストが実行されます。OrientationMode
列挙値のVertical
とFull
が、それぞれTrackedTarget
とSurfaceNormal
に名前変更されました。- 関連付けられた 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
名前空間が ReadOnlyAttribute
、BeginReadOnlyGroupAttribute
、および EndReadOnlyGroupAttribute
に追加されました。
PointerClickHandler
PointerClickHandler
クラスの使用は非推奨とされました。 代わりに、PointerHandler
を使用してください。同じ機能が提供されます。
HoloLens クリッカーのサポート
HoloLens クリッカーのコントローラー マッピングが、アンハンドの WindowsMixedRealityController
からアンハンドの WindowsMixedRealityGGVHand
に変更されました。 これを考慮して、ControllerMapping プロファイルを初めて開いたときに自動アップデーターが実行されます。 この 1 回だけの移行手順をトリガーするために、2.0.0 にアップグレードした後に少なくとも 1 回カスタム プロファイルを開いてください。
InteractableHighlight
InteractableHighlight
クラスの使用は非推奨とされました。 代わりに、InteractableOnFocus
クラスと FocusInteractableStates
アセットを使用してください。 のInteractableOnFocus
新Theme
しいアセットを作成するには、プロジェクト ウィンドウで右クリックし、[作成>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 |