与unity游戏对象相关的数据库连接/查询
本文关键字:数据库连接 查询 unity 游戏 对象 | 更新日期: 2023-09-27 18:11:56
我正在制作一个Unity应用程序,需要访问数据库以提供关于一组GameObjects的信息。
目前,我已经为每个GameObject附加了一个脚本,用于建立连接、查询数据库并填充一些公共变量,就像这样:
public class Fill : MonoBehaviour {
static string connectString =
"Server=blah;" +
"Database=blah.org,3500;" +
"User ID=blahman;" +
"Password=blah42;";
static SqlConnection cn = new SqlConnection(connectString);
public string PublicVar;
void Start () {
string sCommand = string.Concat("SELECT blah from blah.table where row =", transform.GameObject.name);
//FILL PUBLIC VARIABLE FOR _______
SqlDataAdapter da = new SqlDataAdapter(sCommand, cn);
cn.Open ();
DataTable dataTable = new DataTable();
int rec = da.Fill (dataTable);
foreach (DataRow row in dataTable.Rows) {
//Debug.Log ("--- Row --- ");
foreach (var item in row.ItemArray){
//Debug.Log ("Item ");
//Debug.Log (item);
PublicVar = item.ToString();
}
}
cn.Close();
}
}
当开始运行场景时,我目前遇到了一些相当大的时间开销,显然是因为数据库正在被连接并在"开始"方法中查询许多不同的游戏对象(>20)。
我的问题是:这些开销从何而来?是在查询本身、连接还是数据适配器中?建立一个全局连接或一个单例连接并让所有脚本访问它是更好的设计吗?我目前的模型似乎是最直观的,但我需要更好的性能。
谢谢
远程数据库增加延迟。例如每个请求100毫秒。
单个对象的选择效率低下,获取所有对象的列表,必要时连接表,只读取一次数据,从而将延迟减少到单个请求100毫秒(加上数据传输),而不是20次100毫秒