0

リストからオブジェクトを生成していますが、これまでのところ、シーンに既に存在する親オブジェクトを見つけることができました。問題は、Random.Range() が思いどおりに機能しないことです。リストされたオブジェクトをランダムな親にスポーンさせたいのですが、代わりに、リストの順序に基づいて親にスポーンしています。

元。0,1,2,3,4,5,6,7,8,9 = 悪い例。8,3,1,4,6,3,7,9,5,2 = いいね笑

var theRange = Random.Range(obj1.Length,obj1.Length);
    for(var i: int = 0; i < theRange; i++){
        var obj2 : GameObject = obj1[i];
        if(obj2.transform.childCount == 0){
        objfromList.transform.parent = obj2.transform;
        objfromList.transform.localPosition = Vector3(0,-2,0);
    }
    }

深く感謝

4

1 に答える 1

1

私のコメントをフォローアップすると、シャッフル機能が必要なようです。以下は単純なFisher-Yates shuffleです。

void shuffle(int[] a){
    for(int i = a.Length-1; i>=0; i--){
        int j = Random.Range(0,i);
        int tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
    }
}

void usage(){
    int[] a = {0,1,2,3,4,5}; // assumes obj1.Length = 6
    shuffle(a);
    for(int i = 0; i < a.Length; i++){
        GameObject obj2 = obj1[a[i]];
        GameObject objFromList = GetNextObject(); // dummy method grabbing next list object

        objFromList.transform.parent = obj2.transform;
        objFromList.transform.localPosition = Vector3(0,-2,0);
    }
}

これにより、必要なものの一部が得られるはずです。の順序が重要でない場合は、私の例の obj1ように二次配列を使用する代わりに、直接シャッフルできます。a

于 2013-11-01T19:15:31.467 に答える