C# 在unity c中,从firebase数据库检索每一帧上的数据需要更长的时间#
我目前正在开发一个正在运行的倍增游戏,我需要在firebase数据库的每一帧上存储和检索每个玩家的x、y、z位置,比如说我每秒有50帧。我能够在每一帧上保存玩家数据。但当在每一帧上检索时,速度会减慢。假设保存需要0.02秒,检索大约需要0.1秒。我使用unity作为游戏引擎C# 在unity c中,从firebase数据库检索每一帧上的数据需要更长的时间#,c#,firebase,unity3d,firebase-realtime-database,C#,Firebase,Unity3d,Firebase Realtime Database,我目前正在开发一个正在运行的倍增游戏,我需要在firebase数据库的每一帧上存储和检索每个玩家的x、y、z位置,比如说我每秒有50帧。我能够在每一帧上保存玩家数据。但当在每一帧上检索时,速度会减慢。假设保存需要0.02秒,检索大约需要0.1秒。我使用unity作为游戏引擎 //for saving - var pos = this.gameObject.GetComponent<RectTransform> ().localPosition; data = new Data (
//for saving -
var pos = this.gameObject.GetComponent<RectTransform> ().localPosition;
data = new Data ();
data.x = pos.x;
data.y = pos.y;
string json = JsonUtility.ToJson (data);
reference.Child ("users").Child ("4444").SetRawJsonValueAsync (json);
//for retrieving -
FirebaseDatabase.DefaultInstance
.GetReference ("users/4444")
.GetValueAsync ().ContinueWith (task => {
if (task.IsFaulted) {
// Handle the error...
} else if (task.IsCompleted) {
DataSnapshot snapshot = task.Result;
if (snapshot == null) {
Debug.Log ("snapshot is null");
} else {
json = snapshot.GetRawJsonValue ().ToString ();
data = JsonUtility.FromJson<Data> (json);
}
//用于保存-
var pos=this.gameObject.GetComponent().localPosition;
数据=新数据();
数据x=位置x;
数据y=位置y;
字符串json=JsonUtility.ToJson(数据);
reference.Child(“用户”).Child(“4444”).SetRawJsonValueAsync(json);
//用于检索-
FirebaseDatabase.DefaultInstance
.GetReference(“用户/4444”)
.GetValueAsync().ContinueWith(任务=>{
如果(task.IsFaulted){
//处理错误。。。
}如果(task.IsCompleted){
DataSnapshot快照=task.Result;
如果(快照==null){
Log(“快照为空”);
}否则{
json=snapshot.GetRawJsonValue().ToString();
data=JsonUtility.FromJson(json);
}
因此,我需要其他玩家在每个帧上的位置信息。如果我将帧限制为10帧或更少,效果会很好,但这对于在线倍增游戏来说没有意义。非常感谢您的帮助。我不确定您的问题是什么?如果您希望游戏以每秒X帧的速度运行,则需要每1/X秒渲染一帧。这可以ean认为某些操作过于昂贵且不实用,无法在实时应用程序中运行。人们不会从数据库中获取一个值,但可能一次获取1000个值,然后对其进行处理,同时获取下一个值。我想说的是,保存值也是如此。