Я действительно изо всех сил пытаюсь пройти тест Oculus VRC TestSubmitWhenNotVisible - PullRequest
1 голос
/ 07 мая 2019

Я застрял на последнем тесте моего приложения перед отправкой в ​​магазин Oculus. Я пробовал все виды безрезультатно. Мне нужно сделать, это пройти кадры, когда не виден тест.

По сути, приложение должно перейти в режим паузы, когда пользователь нажимает кнопку меню на сенсорном контроллере Oculus.

Мне нужно остановить отправку всех кадров из 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

Проверяет, перестает ли ваше приложение отправлять фреймы при открытом Универсальном меню.

Примечание:

Мой самый последний ответ командной строки для теста - это следующий вывод:

Запуск TestSubmitFramesWhenNotVisible Ожидание запуска приложения в течение 5 секунд до начала тестирования ...

Стартовый тест ...

Запрос пустоты ...

Количество текстурных цепочек, зафиксированных, когда они видны. 68

Количество текстурных цепочек, зафиксированных, когда они не видны 4

ОШИБКА: зафиксирована цепочка обмена текстурой (называемая ovr_CommitTextureSwapChain), когда приложение не отображается

Пожалуйста, обратитесь к Руководству VRC: https://developer.oculus.com/distribute/latest/concepts/vrc-pc-input-1/

Очистка ... Test FAILED

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Чтобы обойти это, я создал скрипт с публичными игровыми объектами. Затем я перетащил свой плеер в слоты внутри 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;
     }
 }

 }
0 голосов
/ 03 июня 2019

У меня почти такой же код, но он правильно определяет универсальное меню и останавливает вывод, но он все равно не пройдет тест. Я думаю, что это может пройти, если вы отключите заставки, но не могу знать, так как у меня есть бесплатная версия Unity.

Редактировать: Я видел ваш ответ Диего, но не могу комментировать. Ваши действия разрешили ваш первоначальный вопрос? А какая у вас лицензия на 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;
        }
    }

    //...
}
...