HoloLens2 への道 - 構成ファイル (4)

著作権に関する声明: Davidwang のオリジナル記事はいかなる商業目的での使用も固く禁じられており、許可がある場合にのみ複製できます。

  構成ファイルは、アプリケーションのすべての機能機能といくつかの技術的な詳細を定義し、アプリケーションのタイプと外観を決定します。構成ファイルを細かく正しく設定すると、ハードウェア リソースをより効果的に使用し、アプリケーションのニーズを満たしながらアプリケーションのパフォーマンスを向上させることができます。これらの設定ファイルの中には、アプリケーションの実行中に有効/無効を切り替えたり、他の設定ファイルに変更したりできるものと、アプリケーションの初期化が完了すると変更できないものがあります。一般的に、特定の機能を有効/無効にするためにハードウェア デバイスの機能に基づいて実行時に構成ファイルを動的に置き換える必要がある場合、次のコード リストに示すように、MRTK の初期化前に対応する構成ファイルの置き換えを完了できます。構成ファイルを置き換えるスクリプトには、MRTK が初期化される前に置き換えが確実に完了するように、より高い実行優先順位が必要であることに注意してください。

//方法一
using Microsoft.MixedReality.Toolkit;
using UnityEditor;
using UnityEngine;
public class ProfileSwapper : MonoBehaviour
{
    
    
    void Start()
    {
    
    
        // 加载配置文件,MixedRealityToolkitConfigurationProfile可以换成任何需要替换的配置文件
        var profile = AssetDatabase.LoadAssetAtPath<MixedRealityToolkitConfigurationProfile>("Assets/MixedRealityToolkit.Generated/CustomProfiles/RuntimeSwapProfile.asset");
        MixedRealityToolkit.Instance.ActiveProfile = profile;
    }
}

  MRTK の初期化完了後に構成ファイルを置き換えて特定の機能の動作を変更する場合は、特定の構成ファイルとその構成管理機能に基づいて決定する必要があります。一部の構成ファイルは実行時に動的に切り替えることができますが、一部の構成ファイルは実行時に動的に切り替えることができます。動的切り替えを実行するには、まず、切り替えたい設定ファイルの詳細を十分に理解する必要があります。

MRTK2.7 以降では、MRTK は新しいメソッド SetProfileBeforeInitialization() を提供し、MRTK が初期化される前に元の設定ファイルが確実に置き換えられるようにすることができます。もちろん、以前と同様に、このスクリプトの実行優先度が高いことが前提です。 . コードは以下の通り。

//方法二
using Microsoft.MixedReality.Toolkit;
using UnityEngine;
public class PreInitProfileSwapper : MonoBehaviour
{
    
    

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void Awake()
    {
    
    
        //profileToUse为需要替换运行的配置文件
        MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);
    }
}

  MRTK2.7 では、構成ファイルを動的に切り替える上記の方法に加えて、実行時に構成ファイルを動的に切り替えることができるホット スイッチングも導入されています。

//方法三
using Microsoft.MixedReality.Toolkit;
using UnityEngine;
public class PreInitProfileSwapper : MonoBehaviour
{
    
    

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void swapperProfile()
    {
    
    
        //profileToUse为需要替换运行的配置文件
        MixedRealityToolkit.Instance.ActiveProfile = profileToUse;
    }
}

  ホット スイッチを使用する場合、現在の構成ファイルのアンインストールは、現在のサービスの最後の LateUpdate() メソッドが実行された後に検出され、新しい構成ファイルのロードは、現在のサービスのすべての Update() メソッドが実行される前に行われます。ホット スイッチであるため、MR アプリケーションはこのプロセス中に影響を受け、フリーズするかフリーズする可能性がありますが、UI 要素は変更されません。さらに、優先度の高いスクリプトがこの切り替えプロセス中に構成ファイルにアクセスする可能性があります。新しい構成ファイルがまだセットアップされていない場合、例外が発生します。

  多くの一般的な構成ファイルは開発中に構成できますが、実際の開発では、動作条件に基づいて実行時に一部の構成項目のパラメータを動的に変更する必要がある場合もあります。MRTK 構成ファイル クラスターの優れたツリー構造により、必要なサブ設定ファイルや特定の設定項目を入手するのは非常に簡単で、典型的なサンプルコードは次のとおりです。

//需要引入Microsoft.MixedReality.Toolkit命名空间
void GetProfile()
{
    
    
    var mainProfile = MixedRealityToolkit.Instance.ActiveProfile;
    var inputProfile = mainProfile.InputSystemProfile;
    var pointerProfile = inputProfile.PointerProfile;
    //获取配置属性参数
    float pointingExtent = pointerProfile.PointingExtent;
    //设置配置属性参数
    inputProfile.HandTrackingProfile.HandMeshVisualizationModes = Microsoft.MixedReality.Toolkit.Utilities.SupportedApplicationModes.Player;
}

  MixedRealityToolkit.Instance.ActiveProfile プロパティを使用して、現在の MR アプリケーションのメイン構成ファイルを取得できます。これは単一のインスタンスです。MR アプリケーションの実行中にインスタンスは 1 つだけです。その後、次に従って、必要なサブ構成ファイルを取得できます。構成ファイルのツリー構造 構成ファイルまたは構成プロパティ。一部の構成ファイルパラメータは実行時に変更できませんが、特定の構成ファイルに関連するパラメータは変更できることに注意してください。

  HoloLens2 デバイスの場合、MRTK は、デフォルトの DefaultHoloLens2ConfigurationProfile 構成ファイルとそのサブ構成ファイル クラスターを提供します。この構成ファイル クラスターにより、使用される構成が普遍的で信頼できることが保証されます。プロジェクトを構成するときは、この構成ファイルに基づいて対象を絞った最適化を実行することをお勧めします。クラスター、より速く、より安全。

(以上)
  

参考文献

1. 設定ファイル設定ファイル

おすすめ

転載: blog.csdn.net/yolon3000/article/details/118737552