2016-12-11 38 views
1

我想使用Resource文件夹加载3D模型。我创建了一个sql数据库来存储地址。在这种情况下,我将文件“deer-3ds”存储在“Models”文件夹中,并将这些信息保存在sql中的一个名为“modeladdress”的表中。 所以请帮我改正我的代码。我知道这是100%错误,但我不知道如何解决它。谢谢。使用Resource文件夹和Mysql在Unity中加载3D模型

using UnityEngine; 
using System.Collections; 
using System; 
using System.Data; 
using Mono.Data.Sqlite; 


public class addobject : MonoBehaviour { 

    // Use this for initialization 
    void Start() { 
     //GameObject deer=Instantiate(Resources.Load("deer-3d.bak",typeof(GameObject)))as GameObject; 
//  GameObject instance = Instantiate(Resources.Load("Models/deer-3ds", typeof(GameObject))) as GameObject; 
     string conn = "URI=file:" + Application.dataPath + "/modeladdress.s3db"; //Path to database. 
     IDbConnection dbconn; 
     dbconn = (IDbConnection) new SqliteConnection(conn); 
     dbconn.Open(); //Open connection to the database. 
     IDbCommand dbcmd = dbconn.CreateCommand(); 
     string sqlQuery = "SELECT ordinary,foldername, filename " + "FROM modeladdress"; 
     dbcmd.CommandText = sqlQuery; 
     IDataReader reader = dbcmd.ExecuteReader(); 
     while (reader.Read()) { 
      int ordinary = reader.GetInt32 (0); 
      string foldername = reader.GetString (1); 
      string filename = reader.GetString (2); 
      string path = foldername + "/" + filename; 

      //Debug.Log("value= "+value+" name ="+name+" random ="+ rand); 
      GameObject instance = Instantiate(Resources.Load(path, typeof(GameObject))) as GameObject; 
      instance.SetActive (true); 
     } 

     reader.Close(); 
     reader = null; 
     dbcmd.Dispose(); 
     dbcmd = null; 
     dbconn.Close(); 
     dbconn = null; 


    } 


    // Update is called once per frame 
    void Update() { 
//  GameObject instance = Instantiate(Resources.Load("Models/deer-3ds", typeof(GameObject))) as GameObject; 
//  instance.SetActive (true); 


    } 
} 
+0

什么问题?发生了什么“错误”? – bpgeck

回答

1

首先,您在数据库管理系统中使用SQLite,而不是MySQL。其次,你写你的查询的方式,

string sqlQuery =“选择普通,文件夹名,文件名”+“FROM modeladdress”;

将返回ordinaryfoldername,并filename模型。您需要使用WHERE子句精确指定要使用的模型。因此,在实际执行查询之前,需要一些方法来知道要从数据库中查询哪个模型,并且在这种情况下,为什么甚至查询数据库?无论如何,你将不得不存储一些唯一的标识符,因此数据库不会解决任何问题。

现在关于您编写​​的实际代码,它看起来是正确的(即它应该返回您想要的)。问题一定是你的表是空的,你返回的值是不正确的,或者对象是在不正确的位置实例化的,因此你认为它不工作。如果你想要一个更具体的答案,你必须针对你面对的具体问题(即具体是什么“错误”?)回答这个问题。