Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在unity c中,从firebase数据库检索每一帧上的数据需要更长的时间#_C#_Firebase_Unity3d_Firebase Realtime Database - Fatal编程技术网

C# 在unity c中,从firebase数据库检索每一帧上的数据需要更长的时间#

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 (

我目前正在开发一个正在运行的倍增游戏,我需要在firebase数据库的每一帧上存储和检索每个玩家的x、y、z位置,比如说我每秒有50帧。我能够在每一帧上保存玩家数据。但当在每一帧上检索时,速度会减慢。假设保存需要0.02秒,检索大约需要0.1秒。我使用unity作为游戏引擎

//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个值,然后对其进行处理,同时获取下一个值。我想说的是,保存值也是如此。