首页 > 解决方案 > 在 Unity/Oculus 中设置立体渲染模式

问题描述

我正在尝试通过脚本将 Oculus 的立体渲染模式设置为单通道。该值永远不会改变,即它与“Multi-Pass”保持相同。有没有办法在运行时通过脚本设置立体渲染模式?问题是如果我手动将其设置为 Single-Pass 并在 Editor 中运行应用程序,它工作正常,但是当我停止运行时,设置会自动更改为 Multi-Pass。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;

public class SteoreoRendering : MonoBehaviour
{
    XRSettings.StereoRenderingMode stereoRenderingMode;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        stereoRenderingMode = XRSettings.StereoRenderingMode.SinglePass;
        Debug.Log(stereoRenderingMode);
    }
}

标签: c#unity3doculus

解决方案


您的代码当前没有设置任何内容,XRSettings.StereoRenderingMode stereoRenderingMode;也不是当前设置的引用。

您所做的只是创建一个类型的变量stereoRenderingMode(即 an )并将该变量的值更新为,但之后您不会对该值执行任何操作。它只是在你的函数结束时被清理掉。 XRSettings.StereoRenderingModeenumXRSettings.StereoRenderingMode.SinglePass

这实际上与执行以下操作相同,但使用枚举StereoRenderingMode

string foo = "Hello";

void Start()
{
   foo = "world";
}

我认为您无法Render mode在运行时设置(很可能是因为在构建应用程序之前需要知道它)。如果有可能(很可能)通过设置, 来完成XRSettings.stereoRenderMode,但这是一个只读属性,这意味着 Unity 不打算让您在运行时更改它(至少不是通过该路线。) . 并且没有任何功能SetStereoRenderMode可以设置它。

据我所知,您可以更改它的唯一位置是Project settings > XR Plugin-in management > <Your XR device> > Render Mode(如果您使用的是新的 XR 插件管理系统)在此处输入图像描述

否则,Project Settings > Player > XR Settings > Stereo Rendering Mode如果您使用的是旧的(已弃用)XR 管理系统。在此处输入图像描述

编辑此设置不应在每次构建/运行后重置,但请确保在更改项目后保存项目SinglePass以确保重新加载不会重置它。如果它仍然发生,如果这是一个已知错误,您可能希望将其视为 Unity 的问题跟踪器,如果不将其报告为错误,因为它听起来像是意外行为。(当我在本地尝试时,它不会重置回 MultiPass)


推荐阅读