저는 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)에 대한 '시작'메소드에 연결되고 쿼리되고 있기 때문입니다.
내 질문은 다음과 같습니다.이 오버 헤드는 어디서 발생합니까? 쿼리 자체, 연결, 데이터 어댑터에 있습니까? 하나의 글로벌 연결 또는 싱글 톤을 설정하고 모든 스크립트에 액세스하도록하는 것이 더 나은 설계입니까? 현재 사용중인 모델이 가장 직관적 인 것처럼 보였지만 더 나은 성능이 필요합니다.
감사합니다.