Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

798
Views
Firestore de Unity: ¿cómo ejecutar GetSnapshotAsync() justo después de CheckAndFixDependenciesAsync()?

usando Unity, estoy tratando de inicializar mi tienda de fuego usando CheckAndFixDependenciesAsync() y obteniendo un documento de la tienda de fuego usando GetSnapshotAsync(). Desde un artículo de firebase , es posible agregar una continuación para la tarea con ContinueWithOnMainThread como se muestra en el ejemplo aquí:

 Debug.Log("Checking Dependencies"); FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(fixTask => { Assert.IsNull(fixTask.Exception); Debug.Log("Authenticating"); var auth = FirebaseAuth.DefaultInstance; auth.SignInAnonymouslyAsync().ContinueWithOnMainThread(authTask => { Assert.IsNull(authTask.Exception); Debug.Log("Signed in!"); var successes = PlayerPrefs.GetInt("Successes", 0); PlayerPrefs.SetInt("Successes", ++successes); Debug.Log($"Successes: {successes}"); auth.SignOut(); Debug.Log("Signed Out"); }); });

Sin embargo, este no es el caso de mi proyecto, donde quiero usar GetSnapshotAsync() en su lugar para recuperar algunos datos de 'nivel': todo lo que está dentro del bloque no se está ejecutando.

 private void Start() { Debug.Log("Database awake "); //check if all dependency is in project FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { string lvCode = "oHFxRAIpIHfT8moiYSl9"; Debug.Log("Get level :" + lvCode); DocumentReference levelref = db.Collection("level").Document(lvCode); levelref.GetSnapshotAsync().ContinueWithOnMainThread(querySnapshotTask => { //Debug.Log here is not ran Debug.Log("Completed? " + querySnapshotTask.Result); Debug.Log("Faulted? " + querySnapshotTask.IsFaulted); }); }); }

¿Alguien puede explicar por qué le sucede esto a mi código y posiblemente proporcionar algunas alternativas que usan los métodos ContinueWith? (a diferencia de las soluciones await y coroutine)

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Autor de ese artículo aquí 😃

No puedo ver si está haciendo algo mal, pero supongo que tal vez esté haciendo un db = FirebaseFirestore.DefaultInstance fuera de ese bloque (ignore esto si está haciendo una inicialización diferida). Llamar a eso antes CheckAndFixDependenciesAsync podría estar causando su problema ( CheckAndFixDependenciesAsync verifica que DefaultInstance puede llamar a DefaultInstance sin que se produzca un error).

db su referencia de base de datos podría solucionarlo:

 private void Start() { Debug.Log("Database awake "); //check if all dependency is in project FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { string lvCode = "oHFxRAIpIHfT8moiYSl9"; Debug.Log("Get level :" + lvCode); DocumentReference levelref = FirebaseFirestore.DefaultInstance.Collection("level").Document(lvCode); levelref.GetSnapshotAsync().ContinueWithOnMainThread(querySnapshotTask => { //Debug.Log here is not ran Debug.Log("Completed? " + querySnapshotTask.Result); Debug.Log("Faulted? " + querySnapshotTask.IsFaulted); }); }); }

Además, preste mucha atención a cualquier registro de errores, cambiar el primer ContinueWith a ContinueWithOnMainThread podría revelar más errores (algunas versiones de Unity no informan errores en las tareas en segundo plano).

Finalmente, vale la pena verificar que realmente tengas la configuración de Firestore con tu juego actual. Suponiendo que tiene google-services.json o GoogleService-Info.plist en su directorio Assets/ , puede ir a "Ventana>Firebase>Documentación": Menú abierto a "Ventana>Firebase>Documentación"

Y haga clic en "Abrir en la consola" para ir directamente a su proyecto y verifique que Firestore esté configurado: Página "Documentación" abierta con "Abrir en consola" visible

Si encuentra que cambiar el primer ContinueWith a ContinueWithOnMainThread soluciona su problema por completo, podría valer la pena informar un error . En general, las bibliotecas de Firebase deben ser seguras para subprocesos y, dado que Firestore está en versión beta, tal vez se haya perdido un caso de uso.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!