Как я могу извлечь Json из этой базы данных Firebase вместо локального файла? - PullRequest
0 голосов
/ 03 октября 2018

Я задал около 4 вопросов, связанных с этим, пытаясь спросить, как решить конкретную логику, но через 12 часов я все еще застрял.Я прилагаю свой код, и если бы кто-нибудь мог помочь мне разобраться, как решить эту проблему, я был бы чрезвычайно признателен.

Так что этот код читает data.json и присваивает его строковому dataAsJson, а затем использует Json для загрузкидочерний allRoundData (в базе данных / json) и присваивает его строковому массиву allRoundData.

Сейчас программа компилируется, но вместо этого я пытаюсь получить информацию из базы данных Firebase.В коде вы можете видеть, как моментальный снимок DataSnapshot извлекается из базы данных (изменен URL-адрес по соображениям конфиденциальности), но я не могу понять, как подключить его к allRoundData вместо локального файла.

У меня естьпробовал несколько методов, но независимо от того, я получаю ошибку, что "allRoundData =loadedData.allRoundData;"не указывает на экземпляр объекта.Опять же, эта программа компилируется как есть, но когда на нее указывает объект базы данных Firebase, код разваливается.Я импортировал data.json точно в том же виде, что и в базу данных Firebase, поэтому я не уверен, что проблема на стороне базы данных или с моей логикой, преобразовывающей данные Firebase в строковый массив allRoundData.

IЯ не знаю, как отлаживать программу, я пытаюсь научиться, но я так долго застрял в этой проблеме, что не могу сосредоточиться на чем-то еще.Пожалуйста, кто-нибудь скажите мне, как это сделать.Я просмотрел каждую документацию, связанную с Firebase, базами данных и т. Д., Но ничего не работает.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using System.IO;

using Firebase;
using Firebase.Unity.Editor;
using Firebase.Database;


public class FirebaseStart : MonoBehaviour
{

public static void Firebase()
{
    // Set up the Editor before calling into the realtime database.
    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("FIREBASEWEBSITEURL");

    // Get the root reference location of the database.
    DatabaseReference reference = 
FirebaseDatabase.DefaultInstance.RootReference;

    FirebaseDatabase.DefaultInstance
     .GetReference("allRoundData")
      .GetValueAsync().ContinueWith(task => {
          if (task.IsFaulted)
          {
                  // Handle the error...
              }
          else if (task.IsCompleted)
          {
              DataSnapshot snapshot = task.Result;
              // Do something with snapshot...

           }
      });
}
}

public class DataController : MonoBehaviour
{

private RoundData[] allRoundData;

private PlayerProgress playerProgress;
private string gameDataFileName = "data.json";

// Use this for initialization
void Start()
{
    DontDestroyOnLoad(gameObject);
    LoadGameData();
    LoadPlayerProgress();

    SceneManager.LoadScene("MenuScreen");
}

public RoundData GetCurrentRoundData()
{
    return allRoundData[0];
}

public void SubmitNewPlayerScore(int newScore)
{
    if (newScore > playerProgress.highestScore)
    {
        playerProgress.highestScore = newScore;
        SavePlayerProgress();
    }
}

public int GetHighestPlayerScore()
{
    return playerProgress.highestScore;
}
// Update is called once per frame
void Update()
{

}

private void LoadPlayerProgress()
{
    playerProgress = new PlayerProgress();

    if (PlayerPrefs.HasKey("highestScore"))
    {
        playerProgress.highestScore = PlayerPrefs.GetInt("highestScore");
    }
}
private void SavePlayerProgress()
{
    PlayerPrefs.SetInt("highestScore", playerProgress.highestScore);
}

private void LoadGameData()
{
    string filePath = Path.Combine(Application.streamingAssetsPath, gameDataFileName);

    if (File.Exists(filePath))
    {
        string dataAsJson = File.ReadAllText(filePath);
        GameData loadedData = JsonUtility.FromJson<GameData>(dataAsJson);

        allRoundData = loadedData.allRoundData;
    }
    else
    {
        Debug.LogError("Cannot load game data!");
    }
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...