Random.range multiple instantiations without repetition

Hello all, Ive been at this for the last day or so, and its starting to bug me - I have no problem instantiating several random game objects out of an array of multiple game objects, I can grasp the random.range with no problem, but when it comes to making sure the same game objects aren’t instantiated more that once, I’m having difficulty, Ive tried a few scripts across the net but am having trouble… Could anybody give me a hand?

Heres my code:

var bodyParts : GameObject;

function GenerateBodyParts() {
var bodyPartsNum : int = Random.Range(0, bodyParts.length);
	for (var i = 0; i < 3; i++) {
		Instantiate(bodyParts[bodyPartsNum], transform.position + Vector3(0.05,0.05,-0.9), Quaternion.identity);


I’d really appreciate some help guys, in JS if possible as I’m not very competent in any other language at the moment.

I know there are scripts out there but i can’t seem to get them to work for this function, i.e. multiple random instantiations.

Cheers - monster.

Tested it and it works. Added a 1 second wait just so you could tell the order was random.

var bodyParts : GameObject[];

function Start()

function GenerateBodyParts() {
    //make a copy of the original one
    //since we will be removing them from the array when we create them
    var bodyPartsCopy : GameObject[] = bodyParts;

    //loop through each bodypart
    for (var i = 0; i < bodyParts.Length; i++) {
    //pick a random index
    var bodyPartsNum : int = Random.Range(0, bodyPartsCopy.Length-1);
    //instantiate the bodypart
    yield WaitForSeconds(1);
    Instantiate(bodyPartsCopy[bodyPartsNum], transform.position + Vector3(0.05,0.05,-0.9), Quaternion.identity);

    //now need to remove the bodypart from the array so we don't create it again
    //but we need to make it a JS array first, remove it, then convert back to a builtin array to be used by unity
    var bodyPartsJS : Array = bodyPartsCopy;
    bodyPartsCopy = bodyPartsJS;