我真的很难通过Oculus VRC TestSubmitWhenNotVisible测试

时间:2019-05-07 18:33:23

标签: c# unity3d virtual-reality oculus

在提交给Oculus商店之前,我一直在为我的应用进行最后一次测试。我尝试了各种尝试都无济于事。我需要做的是在不可见测试时通过帧。

有效地,当用户单击oculus touch控制器上的菜单按钮时,应用程序需要进入暂停模式。

我需要停止从Unity提交所有框架。例如,我尝试过的事情,关闭相机,音频,ovrplayercontroller等,但是在裂谷上按下菜单按钮时会提交帧,因此看起来好像冻结了该应用程序。

我尝试过在foreach循环中禁用相机,从而禁用玩家的游戏对象,各种ovr控制器。

我有一个附带脚本的游戏对象,用于尝试根据HMD丢失跟踪检测何时触发测试。

这是我目前所在的位置(再次回到基础知识),任何帮助将不胜感激。

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

 public class HMDCheck : MonoBehaviour
 {

 public GameObject OVRCameraRig;

 private void Update()
{
    if (!OVRManager.isHmdPresent)
    {
        OVRCameraRig.SetActive(false);
         Time.timeScale = 0f;
     }
    else
    {
        OVRCameraRig.SetActive(true);
        Time.timeScale = 1f;
    }
 }

 }

他们的文档还说测试执行此操作:

TestSubmitFramesWhenNotVisible

测试当通用菜单打开时您的应用是否停止提交帧。

注意:

我对测试的最新命令行响应是以下输出:

不可见时启动TestSubmitFrames 在测试开始之前,等待应用程序运行5秒钟...

开始测试...

要求空缺...

可见时已提交的纹理交换链的数量68

不可见时提交的纹理交换链的数量4

错误:应用程序不可见时,提交了一个纹理交换链(称为ovr_CommitTextureSwapChain)

请参考VRC指南: https://developer.oculus.com/distribute/latest/concepts/vrc-pc-input-1/

清理中... 测试失败

3 个答案:

答案 0 :(得分:0)

我有几乎相同的代码,但这可以正确检测通用菜单并冻结输出,但仍无法通过测试。我认为,如果禁用启动屏幕,它可能会通过,但是由于我有Unity的免费版本,所以不知道。

编辑:我看到了您的答案Diego,但无法发表评论。您的动作解决了您原来的问题吗?您拥有Unity的什么许可证?

Camera cam;
bool bPause = false;
void Update()
{
    //install 'Oculus Integration' for this to work
    bool bPauseNow = !(OVRManager.hasInputFocus && OVRManager.hasVrFocus);

    //pause state change
    if (Camera.main != null) cam = Camera.main;
    if (bPause != bPauseNow)
    {
        bPause = bPauseNow;
        if (bPauseNow)
        {
            Time.timeScale = 0.0f; //stops FixedUpdate

            //Update keeps running, but 
            // rendering must also be paused to pass vrc
            cam.enabled = false;
        }
        else
        {
            Time.timeScale = 1.0f;

            //
            cam.enabled = true;
        }
    }

    //...
}

答案 1 :(得分:0)

为了解决这个问题,我创建了一个带有公共游戏对象的脚本。然后,我将播放器拖到Unity内部的插槽中,但将相机独自留在了场景上。这是屏幕截图和代码。最初,我添加了相机以关闭发送的帧,但是Oculus拒绝了它,因为按下菜单按钮后它在后台冻结了。

enter image description here

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

public class HMDCheck : MonoBehaviour
{

public GameObject target, scripts, LocalAvatar;

private void Update()
{
    if (!OVRManager.hasVrFocus || !OVRManager.isHmdPresent || !OVRManager.hasInputFocus)
    {
        //target.SetActive(false);
        scripts.SetActive(false);
        LocalAvatar.SetActive(false);
        Time.timeScale = 0f;
        AudioListener.pause = true;
    }
    else
    {
        //target.SetActive(true);
        scripts.SetActive(true);
        LocalAvatar.SetActive(true);
        Time.timeScale = 1f;
        AudioListener.pause = false;
     }
 }

 }

答案 2 :(得分:0)

我正在使用“ Oculus XR插件”,并且遇到了这个问题, 但是我发现“ VRC验证程序”的结果不太准确, 然后我将应用提交了审核并通过了测试。

相关问题