- Home /
 
Creating a class?
I have the following code to create objects at random locations (I still need to write the random code):
public GameObject objectPrefab;
 
               void Start() { StartCoroutine( SpawnObjects() ); }
 
               IEnumerator SpawnObjects() { while( true ) { Instantiate( objectPrefab, /however you need to determine a valid random position/, Quaternion.identity ); yield return new WaitForSeconds( 1.0f ); } } 
 
               
               Now to initiate it I apparently need to put the code in a class and attach it to an empty object (Thanks Tetrad for that!). But I was wondering how I could go about creating and using this class in the context of this problem?
Thanks in advance!
Answer by Mike 3 · Jun 18, 2010 at 08:50 AM
This should do it:
using UnityEngine; using System.Collections;
 
               public class SameNameAsFilename : MonoBehaviour { public GameObject objectPrefab;
 
                void Start()
 {
     StartCoroutine( SpawnObjects() );
 }
 IEnumerator SpawnObjects()
 {
     while( true )
     {
         Instantiate( objectPrefab, /*however you need to determine a valid random position*/, Quaternion.identity );
         yield return new WaitForSeconds( 1.0f );
     }
 }
 
               } 
 
               
               If it's the same name as the filename and is a monobehaviour, you'll be able to just drag it onto a gameobject in the scene
The two using statements are to make the unity and IEnumerator specific parts compile
Answer by ROM · Jun 18, 2010 at 09:14 AM
It works! Thanks so much! Huzzah!
The only problem I'm having is it isn't creating one object per second like it should. Thousands of objects fly out until it crashes. I can only assume its because it keeps calling the script over and over again. I can't figure out what the problem is :/.
Heres the completed code:
 using UnityEngine; using System.Collections;
 
               public class Spawn : MonoBehaviour { private Vector3 tempVector; 
 
                public GameObject objectPrefab;
 void Start()
 {
     StartCoroutine( SpawnObjects() );
 }
 IEnumerator SpawnObjects()
 {
     tempVector = new Vector3(0.5f, 0.5f, 0.5f);
     while( true )
     {
         Instantiate( objectPrefab, tempVector, Quaternion.identity);
         yield return new WaitForSeconds( 1.0f );
     }
 }
 
               } 
 
              There isn't anything wrong with your script that I can see - make sure this script isn't on the prefab you're instantiating perhaps, that'd cause a crazy amount of objects
Your answer