【发布时间】:2021-08-23 10:12:57
【问题描述】:
我正在尝试为我的 firebase 查询脚本创建一个事件侦听器,但它的行为有点奇怪?!?
这是我的脚本:
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
using UnityEngine.Events;
using Firebase.Firestore;
public class TestDataHandler : MonoBehaviour
{
public GameObject testObject;
private void Start()
{
fbEvent.AddListener(readyToGo);
GetUserData("12345");
}
void readyToGo()
{
Debug.Log("Do Stuff");
tetsObject.SetActive(false);
Debug.Log("Stuff Done");
}
UnityEvent fbEvent = new UnityEvent();
public void GetUserData(string userId)
{
Query query = FirebaseDataManager.instance.users
.WhereEqualTo("userId", userId
);
query.GetSnapshotAsync().ContinueWith(querySnapshotTask =>
{
if (querySnapshotTask.IsFaulted)
{
Debug.Log("No userdata is found");
}
else if (querySnapshotTask.Result.Documents.Count() < 1)
{
Debug.Log("No userdata is found");
}
else
{
DocumentSnapshot userData = querySnapshotTask.Result.Documents.FirstOrDefault();
Dictionary<string, object> data = userData.ToDictionary();
User tempUser = FirebaseSerializer.FBDataToObject(data) as User;
Debug.Log("Userdata found: " + tempUser.firstName);
fbEvent.Invoke();
}
});
}
}
它有点工作,当然听者会听,但在这个例子中,我无法从听者返回函数中停用游戏对象。
我得到了“Do Stuff”日志,但没有得到“Stuff Done”日志并且游戏对象没有被停用?
我在这里错过了什么?
【问题讨论】:
标签: c# firebase unity3d google-cloud-firestore event-listener