es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de Suspend_Data en Unity SCORM

Estoy trabajando en un proyecto de un juego serio en Unity para un cliente que debe ser jugable en un navegador y compatible con SCORM.

Descubrí el concepto de SCORM y LMS con este proyecto.
Hice un sistema interno de copia de seguridad, con un archivo JSON, que funciona muy bien cuando lo compilo para PC, mi puntuación se guarda correctamente y cuando reinicio mi proyecto, puedo cargar mi copia de seguridad.

Desafortunadamente, cuando compilo en WebGL y publico en el sitio web de SCORM Cloud, la información de guardar y cargar no se pasa.

Encontré en internet que debo usar funciones suspend_data, encontré la descripción de sus funciones, pero no puedo encontrar cómo enviar o recuperar mi puntuación.
Debo tener un problema en la conversión de JSON a cadena.
¿Puedes ayudarme con esto, o darme alguna pista?

Gracias de antemano.
Atentamente

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Teniendo en cuenta los requisitos de tu proyecto, es importante asegurarse de que el juego sea jugable en un navegador y compatible con SCORM. Como mencionaste, has implementado un sistema de respaldo interno utilizando un archivo JSON que funciona bien al construir para PC, pero tiene problemas al construir en WebGL y publicar en el sitio web de SCORM Cloud.

    Para resolver este problema, necesitas utilizar las funciones LMSGetValue y LMSSetValue del API de SCORM para recuperar y guardar datos respectivamente. Para convertir los datos JSON en un formato de cadena que se pueda usar con el API de SCORM, puedes utilizar el método JSON.stringify().

    Aquí tienes un ejemplo de cómo utilizar la función LMSSetValue para guardar la puntuación en SCORM:

    var score = { points: 100, time: 60 }; // tus datos de puntuación en formato JSON
    var scoreString = JSON.stringify(score); // convertir JSON a cadena
    
    // guardar la puntuación utilizando LMSSetValue
    var result = parent.SCORM_API.LMSSetValue("cmi.suspend_data", scoreString);
    
    if (result) {
      console.log("Puntuación guardada exitosamente en SCORM");
    } else {
      console.log("Error al guardar la puntuación en SCORM");
    }
    

    De manera similar, puedes utilizar la función LMSGetValue para recuperar la puntuación de SCORM y convertirla nuevamente en JSON:

    // recuperar la puntuación de SCORM utilizando LMSGetValue
    var scoreString = parent.SCORM_API.LMSGetValue("cmi.suspend_data");
    
    if (scoreString !== "") {
      // convertir la cadena nuevamente en JSON
      var score = JSON.parse(scoreString);
    
      console.log("Puntuación recuperada exitosamente de SCORM:");
      console.log(score);
    } else {
      console.log("No se encontraron datos de puntuación en SCORM");
    }
    

    Espero que esto te ayude con tu proyecto. Hazme saber si tienes alguna pregunta o problema adicional. ¡Buena suerte!

Comments are closed.