【问题标题】:Database connections/queries as tied to unity gameobjects与统一游戏对象相关的数据库连接/查询
【发布时间】:2014-07-09 01:52:57
【问题描述】:

我正在开发一个 Unity 应用程序,该应用程序需要访问数据库以提供有关一组游戏对象的信息。

目前,我为每个游戏对象附加了一个脚本,用于建立连接、查询数据库并填充一些公共变量,如下所示:

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)。

我的问题是:这些开销从何而来?是在查询本身、连接还是数据适配器中?建立一个全局连接或单例并让所有脚本访问它会更好吗?我当前的模型似乎最直观,但我需要更好的性能。

谢谢

【问题讨论】:

    标签: c# database unity3d


    【解决方案1】:

    远程数据库会增加延迟。假设每个请求 100 毫秒。

    选择单个对象效率低下,获取所有对象的列表,必要时连接表,仅读取一次数据,从而将延迟减少到 100 毫秒(加上数据传输)的单个请求,而不是 20 乘以 100女士。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多