The Life and Death of a GameObject

Soon into your project, you will realize that you need many of the same GameObject to achieve the look and feel you want for your game — be that enemies, weapon projectiles, birds in the sky or any other often used entity within your game.

Fortunately, we don’t need 100 enemy GameObjects made during design time. With Unity, we are able to create these GameObjects on the fly as and when we need them by using prefabs — or prefabricated GameObjects — and Instantiating instances of them.

Let’s use our Player’s laser for this example. First off, you need to create your laser. We’ll just use a Unity provided primitive capsule for now.

Name the capsule appropriately, zero out the position, scale it down to an appropriate size and position it just above our Player.

With this done, create a folder in your project window named ‘Prefabs’ and drag the Laser GameObject from the hierarchy into the new folder. You can then delete the Laser from the hierarchy.

Now we need to create the functionality to fire our Laser and call for our prefab to be created. In our Player script —

First, create a reference to our prefab — ensure you serialize this so it can be set in the inspector
Create the conditional check that fulfills our requirements for firing the Laser
Create an instance of our prefab

The Instantiate instruction has many ways to implement it, in this example, it uses 3 arguments — the GameObject we want to create an instance of, a Vector3 position for the newly created GameObject and a default rotation.

NOTE: For more information on the different ways to use the Instantiate method, check out the Unity docs — Unity — Scripting API: Object.Instantiate

Now we have the functionality for the laser implemented, save the script and head back to Unity. Select the Player and assign the prefab.

With a short script attached to our laser, we’re all set. And our Player creates as many instances of the laser as times you hit the spacebar or click the mouse.

This does lead to a bit of a messy hierarchy very quickly so we need to make sure that once our prefab is finished with and we no longer need it, we delete it from our game.

With a couple of lines added to the Laser script, we can dispose of the lasers once they pass a certain point.

And here ends the life of the GameObject, short and sweet, never to be seen again but maybe copied again and again and again and again…




A UK based Unity Developer with a passion for gaming and coding

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Launching a resource platform to help projects become digital public goods

Product Thinking is Greater Than Project Thinking

Recursive Functions

KWOC || My Kharagpur Winter of Code Experience

Cloud Service Performance Improvement

Shiba Inu Price Steps Into Buy Zone ! Here Are The Entry And Exit Levels

Semantic Web History & Tools to use, to “Naturalise the Web”

Salesforce deployment error | Picklist value : in picklist : not found

picklist value not found

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Les Street

Les Street

A UK based Unity Developer with a passion for gaming and coding

More from Medium

Day 102: Character Animation Part 5

2.5D Platformer: Moving Platforms

C# scripting in Unity — Day 01

Unity Animator Override Controller — Another Tool to Improve Animator Functionalities