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는 MRTK가 초기화되기 전에 원본 구성 파일이 교체되도록 하는 데 사용할 수 있는 새로운 메서드 SetProfileBeforeInitialization()을 제공합니다.물론 이전과 마찬가지로 이 스크립트의 실행 우선 순위가 더 높다는 전제가 있습니다. .코드는 다음과 같습니다.

//方法二
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 애플리케이션이 실행 중일 때는 인스턴스가 하나만 있습니다. 그런 다음 원하는 하위 구성 파일을 얻을 수 있습니다. 구성 파일의 트리 구조 구성 파일 또는 구성 속성 일부 구성 파일 매개변수는 런타임에 수정할 수 없지만 특정 구성 파일과 관련된 다른 매개변수는 수정할 수 있다는 점에 유의해야 합니다.

  HoloLens2 장치의 경우 MRTK는 기본 DefaultHoloLens2ConfigurationProfile 구성 파일과 해당 하위 구성 파일 클러스터를 제공합니다. 이 구성 파일 클러스터는 사용된 구성이 보편적이고 신뢰할 수 있는지 확인합니다. 프로젝트를 구성할 때 이 구성 파일을 기반으로 대상 최적화를 수행하는 것이 좋습니다. 클러스터. , 더 빠르고 안전합니다.

(위에)
  

참고자료

1. 구성 파일 구성 파일

추천

출처blog.csdn.net/yolon3000/article/details/118737552