6

実行中にプレハブをインスタンス化して破棄する必要があります。私はこれらを試しました:

public Transform prefab;     //I attached a prefab in Unity Editor

Object o = Instantiate(prefab);
//using this I cannot get the transform component (I don't know why) so useless

Transform o=(Transform)Instantiate(prefab);
//gives transform and transform component cannot be destroyed

GameObject o=(GameObject)Instantiate(prefab);
//invalid cast

では、どうやってそれを行うのですか?

4

4 に答える 4

3

変換コンポーネントを持たない祖先オブジェクトを取得する場合は、インスタンスをオブジェクトとして宣言する必要はありません。

public GameObject prefab;
GameObject obj = Instantiate(prefab); 

変換コンポーネントを取得したい場合は、 と入力するだけですobj.transform
必要に応じて、オブジェクト タイプを破棄しますDestroy(obj);

于 2013-08-12T01:15:31.717 に答える
3

変換を与え、変換コンポーネントを破棄することはできません

コンポーネントが接続されている を破棄しGameObjectます。Transform

GameObject.Destroy(o.gameObject);

Instantiateメソッドは、パラメーターとして渡されたオブジェクトと同じ型を返します。にキャストするTransformことはできませんGameObject。これを試して:

GameObject o=((Transform)Instantiate(prefab)).gameObject;
于 2013-08-11T23:02:37.197 に答える
1

あなたのコードは意味がありません..

public Transform prefab;
Object o = Instantiate(prefab);

Transform をインスタンス化していますか? 代わりにプレハブを取り付けてみませんか?

試してみてください:

public GameObject prefab; // attach the prefab in Unity Editor
GameObject obj = Instantiate(prefab);
GameObject.Destroy(obj);
于 2013-08-12T04:13:07.260 に答える