我在Unity中使用SQLite尝试显示数据库中的一些信息。
但是我遇到了一些问题,我不知道为了让它发挥作用而缺少什么。
public class training : MonoBehaviour {
public List<City> LoadCity()
{
var listOfCity = new List<City>();
string conn = "URI=file:" + Application.dataPath + "/DataBase/db_01.s3db";
IDbConnection dbconn;
dbconn = (IDbConnection) new SqliteConnection(conn);
dbconn.Open();
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT r_id,r_name "+" FROM region ";
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while(reader.Read())
{
var city = new City();
city.vID = Convert.ToInt32(reader["r_id"]);
city.vName = reader["r_name"].ToString();
listOfCity.Add(city);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
dbconn = null;
return listOfCity;
}
void OnGUI()
{
for (int ai = 0; ai < LoadCity().Count; ai++)
{
GUI.Button(new Rect (25, 50+(ai+1)*35, 210, 30),(City.vName[ai]));
Debug.Log(City.vName[ai]);
}
}
}
和
{{1}}
为什么在无效GUI中我无法调用City.vName?
感谢您的帮助。
答案 0 :(得分:2)
试试这个:
void OnGUI()
{
int ai = 0;
foreach(var city in LoadCity())
{
GUI.Button(new Rect (25, 50+(ai+1)*35, 210, 30),(city.vName));
Debug.Log(city.vName);
ai++;
}
}
如果有任何问题,请告诉我。
答案 1 :(得分:1)
因为City.vName不是静态成员,因此您无法访问该成员,请尝试使用以下代码在类中使用vName static:
NUll
事实上,你可以在不调用City.vName的情况下完成工作。在您的情况下,您可以从LoadCity()函数捕获列表,然后使用 public class City // List
{
public int vID { get; set; }
public static string vName{ get; set; }
}
答案 2 :(得分:0)
在你的OnGui()函数中,你将所有数据加载到列表中,然后完成它。然后,当您引用City时,您不会指定特定对象,只能指示类名。因此,您需要指示特定对象以获取其值。 试试这个:
var listOfCity =LoadCity();
foreach (var city in listOfCity)
{
GUI.Button(new Rect (25, 50+(ai+1)*35, 210, 30),(city.vName));
Debug.Log(city.vName);
}
}