En este momento estás viendo Unity: el método FireBase Realtime DataBase ValueChanged no funciona después de mover GameObject a otra escena

 – Unity

Unity: el método FireBase Realtime DataBase ValueChanged no funciona después de mover GameObject a otra escena – Unity

Unity: el método FireBase Realtime DataBase ValueChanged no funciona después de mover GameObject a otra escena

– UnityAssets3Free

hola , me llamo Daniel y aqui os traigo
nueva pregunta curiosa

Estoy trabajando en un juego en Unity y quiero guardar datos de usuario en Firebase Realtime Database (a partir de ahora lo llamaremos Firebase).

Tuve la idea de crear un GameObject, adjuntar un Script (https://github.com/xBarkeeper/2DRun/blob/main/Assets/MainMenu/Scripts/MonoUser.cs) y cargue los datos en la escena inicial. El script tenía el método ValueChanged de FireBase, por lo que cada vez que cambian los datos en Firebase, también se actualizan en GameObject.

Mi plan era pasar este GameObject a lo largo de mi juego para no tener que preocuparme más por los datos del usuario.

No, tengo dos problemas con él:

  1. Cuando muevo el objeto de una escena a otra, el método ValueChanged ya no funciona. (No escuchar FireBase)

  2. Cuando tengo otro GameObject que usa FireBase, funciona completamente bien hasta que uso setDataBaseValues ​​​​o ContinueWithOnMainThread. Ambos corren por primera vez cuando detengo mi unity correr. Pero luego trabajar con éxito.

Realmente no sé qué código debo adjuntar a esta pregunta.

Por ejemplo para el problema 2:

Debug.Log("Log 1");
       DatabaseReference databaseReference = FirebaseDatabase.DefaultInstance.RootReference;
       Debug.Log("Log 2");
       this.userName = userName;
       FirebaseDatabase.DefaultInstance
       .GetReference(userName)
       .GetValueAsync().ContinueWithOnMainThread(task =>
       
           if (task.IsFaulted)
           
               Debug.Log("Log 3");
           
           else if (task.IsCompleted)
           
               DataSnapshot snapshot = task.Result;
               Debug.Log("Log 4");
               this.uuid = snapshot.Child("uuid").GetValue(true).ToString();
               Debug.Log("Log 5");
           
       );

El registro 2 se llama directamente. El registro 4 se imprime cuando salgo de mi juego.

También intenté tener una escena cargada a lo largo de mi juego con el GameObject adjunto. Pero en el momento en que cargo una nueva escena, ya no escucha el método ValuesChanged.

¿No se puede enviar un objeto FireBase entre escenas con un ValuesChanged funcionando?

¿Realmente necesito crear un objeto FireBase en cada escena, aunque los datos siempre deben volver a descargarse?

¿Y por qué Thread setDatabaseValues ​​comienza primero cuando detengo mi Unity Game?

1 respuesta 1

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

por hoy,espero que te funcione

Deja una respuesta