我正在使用适用于 Firebase 实时数据库的 Unity SDK。大多数时候它工作得很好。但是,有时它会返回旧数据以供查询。有时它只是上次更新之前的一次,有时,我什至不确定其之间有多少次更新。
您可以在下面看到我的数据库参考,记下
levelDepth, keyCount, keysAquiredLevels, gold, currentLevelCompleted
值。
下面是我使用 Unity 时获得的原始响应的图像
var response = await databaseReference.GetValueAsync();
您会注意到所有这些属性都与之前的更新不同。
这段代码在大多数情况下都有效,我真的需要锤击 10-20 次才能重现这个问题,但它确实发生了!我不知道为什么。
我已设置
FirebaseDatabase.DefaultInstance.SetPersistenceEnabled(false);
并尝试将 keepSync
设置为 true 和 false,但问题仍然发生。
void Start()
{
FirebaseDatabase.DefaultInstance.SetPersistenceEnabled(false);
Firebase.AppOptions options = AppOptions.LoadFromJsonConfig(firebaseOptions.text);
FirebaseApp.Create(options);
}
public static async Task<CurrentLevelConfig> GetCurrentLevelConfig()
{
DatabaseReference databaseReference = FirebaseDatabase.DefaultInstance
.RootReference
.Child("users")
.Child(FirebaseConfig.user.UserId)
.Child("currentLevelConfig");
var response = await databaseReference.GetValueAsync();
if (response.Exists)
{
CurrentLevelConfig config = JsonConvert.DeserializeObject<CurrentLevelConfig>(response.GetRawJsonValue());
Debug.Log("Got current level config!");
return config;
}
return null;
}
任何想法将不胜感激。
@joe-spiro 关于添加 CheckAndFixDependencyAsync 的评论似乎解决了该问题! 我将继续测试,但现在我不再重现,将其标记为已回答。