incremental, sequential numbering

Is it possible to instantiate prefabs, with each subsequent prefab receiving an incremental suffix?

cube1, cube2, cube3, cube4 etc…

I tried this, but it creates 10 prefabs named sequentially, all in one go… I need to do it it one at a time.

var cube : GameObject; 
function Update () 
{ 
   if (Input.GetKey ("m")  Input.GetButtonDown ("Fire1")) 
   { 
      var ray = Camera.main.ScreenPointToRay (Input.mousePosition); 
      var hit : RaycastHit; 
      if (Physics.Raycast (ray, hit)) 
       { 
       if(hit.collider.gameObject.name.Contains("colider")) { 
      for (i = 0; i < 10; i++) { 
       var cube = Instantiate(cube, hit.point, transform.rotation); 
       cube.name = "cube" + i.ToString(); 
                } 
            } 
        } 
     } 
}

Make a counter variable, and increase it whenever you create an object.

counter++.

OK I’ve had some success in sequential numbering!!!

Am able to create cube1, cube2, cube3 etc…

Now I need the current object on which I place the code below, to look at the next object in line… So if the current object is cube4 the target needs to be cube5…

As I understand it I need something like
“receiver = this game object’s name + 1”
but how would I code that? Using strings?

var receiver: Transform;

function Update () { 
   receiver = GameObject.FindWithTag("new").transform;
   transform.LookAt(receiver.transform); 
   var distance = Vector3.Distance(transform.position, receiver.transform.position); 
   var timeToTarget = distance/particleEmitter.localVelocity.z;
   particleEmitter.minEnergy = timeToTarget;
   particleEmitter.maxEnergy = timeToTarget; 
   particleEmitter.rndVelocity.x = receiver.transform.localScale.x/timeToTarget; 
   particleEmitter.rndVelocity.y = receiver.transform.localScale.y/timeToTarget;
}

For each object, when you instantiate it, you rename it as “object”+ number. You store number as an integer and reuse it to search for a GameObject.Find (“object”+(number+1)).

How about if you want to find all the objects that are called “object”+i, but you don’t know how many there are? Can you something like

GameObject.Find(name.IndexOf("object") != -1);

?

EN

A very round about way of doing it, I’m sure, but it works for me…

var receiver: Transform;
var myname : String;
var number : String;
var mynumber : int;

function Update () { 
   myname = this.gameObject.name;
   number = myname.Replace("name","");
   mynumber = parseInt(number) +1;

   receiver = GameObject.Find("name" + mynumber).transform;
   transform.LookAt(receiver.transform); 
   var distance = Vector3.Distance(transform.position, receiver.transform.position); 
   var timeToTarget = distance/particleEmitter.localVelocity.z;
   particleEmitter.minEnergy = timeToTarget;
   particleEmitter.maxEnergy = timeToTarget; 
   particleEmitter.rndVelocity.x = receiver.transform.localScale.x/timeToTarget; 
   particleEmitter.rndVelocity.y = receiver.transform.localScale.y/timeToTarget;
}