Невозможно проанализировать JSON информацию в объекте, которая необходима для установки значений объекта, чтобы ее можно было использовать позже - PullRequest
0 голосов
/ 02 мая 2020

В настоящее время я немного борюсь с проектом, над которым я работаю, который использует Unity, Vuforia C# и Firebase.

У меня есть приложение, которому нужно присвоить информацию объекту "Piece" , Существуют разные цвета, и у каждого «Piece» есть свои значения, установленные скриптом «pieceData».

[Serializable]
public class PieceData
{
    //Name of piece prefab
    public string pieceName;
    //Assign the piece to the center of the marker
    public bool onMarker;
    //Indicates this player is taking over the marker, either from being null or being controlled by another player.
    public bool isReplacing;       
    //The time the piece has been active on the marker
    public float timeOnMarker;
    //Who currently owns this piece?
    public string playerName;

    public PieceData(string pieceName, bool onMarker, bool isReplacing, float timeOnMarker, string playerName)
    {
        this.pieceName = pieceName;
        this.onMarker = onMarker;
        this.isReplacing = isReplacing;
        this.timeOnMarker = timeOnMarker;
        this.playerName = playerName;
    }

Пользователь проходит через пользовательский интерфейс, чтобы назначить свое имя, комнату, которую он использует, и цвет они хотят, чтобы их кусок был. Это присваивает некоторые значения JSON, используя значения в pieceData. После того, как это было сделано, мне нужно отправить эту информацию объекту, однако данные JSON не разбираются в объект pieceData, который можно установить для объекта piece. Я пытался использовать JSONUtility.From Json, и я изо всех сил пытаюсь заставить это работать.

Ниже приведен код в сценарии базы данных, который я пытался использовать, чтобы заставить это работать:

public static void GetCurrentRoomOwner()
{
    FirebaseDatabase.DefaultInstance.GetReference("data").Child("rooms").Child(Config.roomName).Child("ownedBy").GetValueAsync().ContinueWith(task =>
    {
        if (task.IsCompleted)
        {
            Debug.Log(Config.roomName);
            Config.roomOwnedByPiece = new Piece();

            DataSnapshot snapshot = task.Result;
            string value = snapshot.GetRawJsonValue();             
            PieceData newPieceData = JsonUtility.FromJson<PieceData>(value);
            Debug.Log("Is room owned: " + Config.isRoomOwned + "by: " + newPieceData.pieceName);
            //Not parsing the JSon information into a piecedata object, which is needed to set the pieceData for the player piece that currently owns the space.
            //So this value remains null and cannot be useed elsewhere.
            Config.roomOwnedByPiece.SetPieceData(newPieceData);
        }
    });
}

Стоит также отметить, что пользовательский интерфейс для меню (где игрок назначает свое имя, цвет фигуры и т. Д. c) находится в другой сцене, чем сценарий, в котором находится сценарий базы данных, и этот метод вызывается в методе Start () сценария базы данных. Если кто-то может помочь или хотя бы дать мне представление о том, где я иду не так, я был бы очень признателен:)

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