c# - 在 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);
}
}
解决方案
您的代码当前没有设置任何内容,XRSettings.StereoRenderingMode stereoRenderingMode;
也不是对当前设置的引用。
您所做的只是创建一个类型的新变量stereoRenderingMode
(即 an )并将该变量的值更新为,但之后您不会对该值执行任何操作。它只是在你的函数结束时被清理掉。 XRSettings.StereoRenderingMode
enum
XRSettings.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)
推荐阅读
- node.js - 猫鼬是否默认使用有线协议?
- javascript - 更改自动播放策略后如何自动播放音频?
- python - 如何将 SQL 查询结果分配给变量(机器人框架)以在应用程序编辑文本中输入?
- html - 检查 html pop 的来源
- javascript - 我无法处理承诺拒绝
- mysql - 如何从两个表中获得最高工资
- javascript - 角嵌套 FormArray
- c++ - 如何在 Visual Studio 中修复“C2061 语法错误标识符“堆栈”?
- camera - 在android中使用Camera2进行实时处理应该采用什么图像格式?
- php - MongoDB和PHP连接