2
votes

J'ai vraiment du mal à passer le test Oculus VRC TestSubmitWhenNotVisible

Je suis bloqué sur le dernier test de mon application avant de la soumettre à la boutique Oculus. J'ai essayé toutes sortes sans succès. Je dois faire est de passer le test des cadres lorsque le test n'est pas visible.

En fait, l'application doit passer en mode pause lorsque l'utilisateur clique sur le bouton de menu sur le contrôleur tactile oculus.

Je dois arrêter tous les cadres soumis depuis Unity. Par exemple, les choses que j'ai essayées, éteignent les caméras, l'audio, le contrôleur de lecture, etc.

J'ai essayé de désactiver les caméras dans une boucle foreach, de désactiver le gameobject du joueur, les contrôleurs ovr de toutes sortes.

J'ai un gameobject avec un script attaché pour essayer de détecter quand le test se déclenchera en fonction de la perte de suivi du HMD.

Voici où j'en suis actuellement (retour aux bases), toute aide serait grandement appréciée.

 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;
    }
 }

 }

De plus, leurs documents indiquent que le test effectue cette action:

TestSubmitFramesWhenNotVisible

Teste si votre application cesse de soumettre des cadres lorsque l'Universal Le menu est ouvert.

Remarque:

Ma réponse de ligne de commande la plus récente pour le test est la sortie suivante:

Démarrage de TestSubmitFramesWhenNotVisible Attendre que l'application s'exécute pendant 5 secondes avant le début du test ...

Démarrage du test ...

Demande du vide ...

Nombre de texture chaînes d'échange validées lorsqu'elles sont visibles 68

Nombre de chaînes d'échange de textures validées lorsqu'elles ne sont pas visibles 4

ERREUR: a commis une chaîne d'échange de textures (appelée ovr_CommitTextureSwapChain) lorsque l'application n'est pas visible

Veuillez vous référer aux directives du VRC: https://developer.oculus.com/distribute/latest / concepts / vrc-pc-input-1 /

Nettoyage ... ÉCHEC du test


0 commentaires

3 Réponses :


0
votes

J'ai presque le même code, mais cela détecte correctement le menu universel et gèle la sortie, mais il ne réussit toujours pas le test. Je pense que cela peut passer si vous désactivez les écrans de démarrage, mais je ne peux pas le savoir puisque j'ai la version gratuite de Unity.

Edit: J'ai vu votre réponse Diego, mais je ne peux pas commenter. Votre action a-t-elle résolu votre question initiale? Et quelle licence avez-vous pour 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;
        }
    }

    //...
}


0 commentaires

1
votes

Pour contourner le problème, j'ai créé un script avec des objets de jeu publics. J'ai ensuite traîné mon lecteur dans les emplacements à l'intérieur de Unity mais j'ai laissé la caméra seule sur la scène. Voici une capture d'écran et le code. J'ai initialement ajouté la caméra pour désactiver l'envoi de trames, mais Oculus l'a rejetée car elle se figeait en arrière-plan en appuyant sur le bouton de menu.

entrez la description de l'image ici

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 commentaires

0
votes

J'utilise le "plugin Oculus XR" et j'ai ce problème, mais j'ai trouvé que les résultats du "VRC Validator" ne sont pas aussi précis, puis j'ai soumis l'application pour examen et j'ai réussi le test.


0 commentaires