2017-09-07 12 views
0

私はResources/aiフォルダからプレハブをロードし、最大5回ループしてランダムなインデックス番号を生成するスクリプトを作成しました。私のプレハブをGameObjectsとして正常にロードし、リストのカウントに基づいてランダムなインデックスを生成します。Unity 3Dがリストからプレハブを作成する

しかし、コーディング中にInstatiateコマンドがエラーを返すので、私は自分のシーンにプレハブを生成する際に問題があります。

私はプレハブの名前をlist[index].nameまたはlist[index].toString()で取得する方法を試しましたが、動作しません。 (注:listはリストの変数を表しますindexは、リスト上のゲームオブジェクトを取得するための単なるインデックスです。これは実際のコードではありません)。

ロードされたGameObjectプレハブをリストでシーンに追加するにはどうすればよいですか?

私の現在のコード:

public List<GameObject> ai; 
public GameObject[] spawn; 

int indexAI; 
int indexSpawn; 

private void Start() 
{ 
    var res = Resources.LoadAll<GameObject>("ai/"); 

    foreach (GameObject obj in res) 
    { 
     ai.Add(obj); 
    } 


    for (int x=0; x<5; x++) 
    { 
     indexAI = UnityEngine.Random.Range(0,ai.Count); 
     indexSpawn = UnityEngine.Random.Range(0, spawn.Length); 

     string name = ai[indexAI].name; 
     Debug.Log(name); 

     //I am currently using this kind of format since this is what I know for now. 
     Instantiate(name,spawn[indexSpawn].transform.position,spawn[indexSpawn].transform.rotation); 
    } 

The error looks like this

ありがとう!

+0

どのようなエラーが返されますか?あなたの 'instantiate'コードと同様に投稿してください。 – ryeMoss

+0

' ai'とは何ですか(定義方法は?) – UnholySheep

+0

@UnholySheep 'List ai'。あなたは 'ai.Count'と' ai.Add(obj); 'を見て知ることができます。 @OPあなたの質問は明確ではなく、あなたは何かをインスタンス化していません。 – Programmer

答えて

2

文字列をインスタンス化しようとしています。代わりにAIオブジェクトのリストにゲームオブジェクトをインスタンス化する必要があります。

Instantiate(ai[indexAI] ,spawn[indexSpawn].transform.position, spawn[indexSpawn].transform.rotation); 
+0

ありがとう!私は自分のプレハブを産むことができました。プレハブを生成する文字列が必要だと思ったので、私はちょうど正しいフォーマットを知らない。私の悪いが、ありがとう! – skildfrix

関連する問題