В настоящее время я немного борюсь с проектом, над которым я работаю, который использует 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 () сценария базы данных. Если кто-то может помочь или хотя бы дать мне представление о том, где я иду не так, я был бы очень признателен:)