2013-12-18 97 views
1

我在Unity中製作了一個文字遊戲,其中有很多GameObjects。每個GameObject名稱是從A到Z的一個字母。unity3d消失Gameobject

當我單擊該對象時,該字母出現在屏幕上。當我寫了一個字時,它會將它與字典進行比較,看它是否正確。我想,當我從這些字母中選出一個正確的單詞並單擊該按鈕時,GameObject就會包含這些字母,這些字母就是我所做的單詞消失的。

下面是代碼:

internal void ReadStudent(string filetoread,string tableName, string itemToSelect, string wCol, string wPar, string wValue){ 

    //jsScript = Camera.main.GetComponent<chk1>(); 

    string connection = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" + filetoread; 
    Debug.Log(connection); 
    string sqlQuery = "SELECT word FROM "+ tableName + " WHERE " + wCol + " " + wPar + " '" + wValue + "'"; 

    OdbcConnection con = new OdbcConnection(connection); 
    OdbcCommand cmd = new OdbcCommand(sqlQuery,con); 
    DataTable dt = new DataTable("dic"); 


    try{ 
     con.Open(); 
     OdbcDataReader reader = cmd.ExecuteReader(); 
     dt.Load(reader); 
     reader.Close(); 
     con.Close(); 
    } 
    catch (Exception ex){ 
     //text = dt.Rows[3][1].ToString(); 
     Debug.Log(ex.ToString()); 
    } 

    finally{ 
     if (con.State!=ConnectionState.Closed){ 
      con.Close(); 
     } 
     con.Dispose(); 
    } 

    if (dt.Rows.Count>0){ 
     text = dt.Rows[0]["word"].ToString(); 
     Debug.Log(text); 
     Debug.Log (wValue); 
     Debug.Log ("Correct"); 
     for(int i=0; i<=wValue.Length;i++){ 
      Debug.Log ("Enter"); 
      if(wValue[i]==gameObject.name[i]){ 
       Debug.Log ("Enter"); 
       gameObject.SetActive (false); 
      } 
     } 
    } 
} 
+2

['GameObject.Destroy(遊戲對象)'](http://docs.unity3d.com/Documentation/ScriptReference/Object.Destroy.html)應做的伎倆。 –

+0

在我的遊戲中,gameObject正在運行時創建名稱,如A(克隆)GameObject.Destroy。(gameObject)不適用於它。我怎麼能得到在運行時創建的gameObject – zahra

+0

我的意思是說,gameObject必須是對你想銷燬的對象的引用。當你創建這個對象時,你應該在那個時候引用它,也許你可以將它們存儲在一個列表中,然後通過並在以後刪除它們?有點取決於如何佈置所有東西 –

回答

0

如果你想刪除的遊戲對象,你可以使用Destroy (gameObject),或者雖然我不會建議它DestroyImmediate(gameObject)

否則,一個更有效的方法是使用gameObject.SetActive(false);

必要時停用,然後重新激活它,記得當我說遊戲gameObject我的意思是一個遊戲對象變量爲競賽對象消滅,例如:

using UnityEngine; 
using System.Collections; 

//You need to assign it in the Start() or from the editor 
public GameObject A; 

public class ActiveObjects : MonoBehaviour 
{ 
    void Start() 
    { 
     //to deactivate it 
     A.SetActive(false); 

     //to activate it 
     A.SetActive(true); 
    } 
} 

如果您要使用gameObject,您最終會刪除/停用正在執行腳本的gameObject。

希望您覺得有用,

亞歷