我在团结项目中使用firebase。我在start方法中有一个变量prodId,它将从firebase中分配/获取。我插入一个显示prodId值的2个Debug.Logs。我想要的是prodId的第一个Debug.Log首先被调用但发生的事情是第一个调用第二个Debug.Log。这就像我希望在firebase获取数据后第二次日志发生。
这是代码
public class Liquor : MonoBehaviour
{
public GameObject[] gameObjects = new GameObject[24];
public Material[] materialsI = new Material[3];
// Use this for initialization
void Start()
{
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://shoplive-39a4f.firebaseio.com/");
DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;
GameObject gameObject = new GameObject();
string prodId=null;
FirebaseDatabase.DefaultInstance
.GetReference("products").Child(name)
.GetValueAsync().ContinueWith(task => {
if (task.IsFaulted)
{
print("error"); // Handle the error...
}
else if (task.IsCompleted)
{
DataSnapshot prod = task.Result;
var values = prod.Value as Dictionary<string, object>;
foreach(var v in values)
{
if(v.Key=="prodId")
{
prodId = v.Value.ToString();
**Debug.Log(prodId);**
}
}
}
});
//reference.Child("products").Child(product.prodId).SetRawJsonValueAsync(json);
int productId = Int32.Parse(name);
if(productId >=2 && productId <=4)
{
gameObject = Resources.Load("Prefabs/Liquor/beer2") as GameObject;
}
if(productId >=7 && productId <=9)
{
gameObject = Resources.Load("Prefabs/Liquor/wine") as GameObject;
}
Vector3 tempPos = transform.position;
float distZ = 0.023f;
float distX = 0.027f;
char[] productInfos = name.ToCharArray();
int shelfGroup = productInfos[0];
int row = productInfos[1];
int col = productInfos[2];
for (int i = 1; i < 11; i++)
{
gameObjects[i] = Instantiate(gameObject) as GameObject;
gameObjects[i].transform.position = new Vector3(tempPos.x, tempPos.y, tempPos.z +distZ);
**Debug.Log(prodId + "sample");**
distZ += 0.023f;
}
}
答案 0 :(得分:0)
通常将数据发送到Firebase服务器,等待响应需要一些时间。
这就是为什么您的Debug.Log(prodId);
行迟到的原因。
建议您将其他行放在Debug.Log(prodId);
行的下方。