2016-12-11 1 views
1

Resource 폴더를 사용하여 3D 모델을로드하고 싶습니다. 주소를 저장할 SQL 데이터베이스를 만들었습니다. 이 경우 "모델"폴더에 "deer-3ds"파일을 저장하고 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

우선 MySQL이 아닌 데이터베이스 관리 시스템에서 SQLite를 사용하고 있습니다. 둘째, 쿼리를 작성한 방법

문자열 sqlQuery = "SELECT 일반, 폴더 이름, 파일 이름"+ "FROM modeladdress";

ordinary, foldernamefilename에 대한 모든 모델을 반환합니다. 사용할 모델을 정확하게 지정하려면 WHERE 절을 사용해야합니다. 따라서 실제로 쿼리를 실행하기 전에 데이터베이스에서 쿼리 할 모델을 알 수있는 방법이 필요합니다.이 경우 데이터베이스를 쿼리하는 이유는 무엇입니까? 데이터베이스가 아무 것도 해결할 수 없도록 일부 고유 식별자를 저장해야합니다.

작성한 실제 코드와 관련하여 올바른 것으로 표시됩니다 (예 : 은 원하는 것을 반환해야 함). 문제는 테이블이 비어 있거나 반환되는 값이 올바르지 않거나 개체가 잘못된 위치에서 인스턴스화되어 작동하지 않는다고 생각하는 것입니다. 보다 구체적인 답변을 원한다면 직면 한 특정 문제 (구체적으로 무엇이 "잘못"된 것인가?)와 함께이 답변에 대해 의견을 말하십시오.

관련 문제