Despite the difficult circumstances of last year, Unity remains the game engine of choice, with 61% of developers surveyed using it and the second most popular choice as a mobile ad network. Every month, there are 5B downloads  of apps built in Unity. In addition, the volume of HD games (video games on PC, macOS, and other desktop platforms with usually high-definition graphics) increased by over 38% in 2020.

Right now, 2.8B monthly active end-users are engaging with content created or operated by Unity solutions in 2020. Unity is a great platform that provides video game creators with many tools to bring their fantastic ideas to life.

What is a Unity GameObject?

GameObjects are essential objects in Unity that represent the basis on which characters, props, and scenery are built in the game development process. They do nothing on their own, but they are like containers to which the other components are attached, thus forming the object’s final functionality. Components are scripts that define the behavior of your GameObjects, how they move, position, rotation, size, and any other custom behavior. So, for example, the Light Object is born by adding the Light component to a GameObject.

The GameObject is the essential concept you need to become familiar with to start programming with Unity.

At the same time, it is widespread for Unity GameObjects, such as characters, treasures, to be created and then removed during the gameplay. This is something common, so just as a game developer must first learn to create a GameObject, he must also learn how to destroy it.

At its most basic, to remove a GameObject requires only two elements:

  1. A script that derives from MonoBehavior, Unity’s standard base class.
  2. A single line of code: ‘Destroy (insertGameObjectHere);’.

Supposing you have those two elements in the script, you can successfully destroy a GameObject.

To make things more straightforward in developing video games, game developers create an Instance of a GameObject. These are clones of prefabricated GameObjects and represent the basis of all in-game interactions in Unity. A prefab is created whenever they drag a GameObject from the Scene view into the Project view, saving it in their game’s Assets.

Basic characteristics of a Unity GameObject

Although GameObjects are the basic in Unity, they are still the most important things that can be added to a Unity scene. To better exemplify, we can take an “ObjectA” and go through the basic features of a GameObject in Unity. However, to find out more about controlling GameObjects, you can check scripts on the GameObject scripting reference page on the Unity website.

Transform component

To represent the position in scenes, rotation, and orientation, a GameObject always has attached a Transform component, which cannot be removed.

Tags

Tags help identify types of GameObject in your scene and distinguishing between them. Also, you can perform some functions if the object has a particular Tag assigned to it.

Layers

Layers provide a similar way of including or excluding GameObjects from specific operations such as rendering or physics collisions. You can configure many cameras in the scene and make each camera capture one or more particular Layers.

GetComponent method

This method allows obtaining the reference of a component of some specific type that is assigned to the GameObject.

SetActive method

If you want to enable or disable the GameObject in the hierarchy, the SetActive method allows you to do that. The result is equivalent to marking or unchecking the tilde at the top of the inspector when the object is selected.

How to use each of these basic characteristics of the GameObject in the development of the video game?

Transform component

In the 3D space, the Transforms are edited in the X, Y, Z axes, and in the 2D space, only in the X and Y axes. In Unity, they are represented with red, green, and blue.

Editing Transforms can be done in the Scene View or changing its properties in the Inspector. In the Scene View, you can use the Move, Rotate and Scale tools, which you can find in the upper left-hand corner of the Unity Editor.

To access the reference of the Transform component, you can use the dot operator as follows:

ObjectA.transform

If you want to access the position of the GameObject in the scene, you use the operator dot again:

ObjectA.transform.position

If you want to access the float that represents the component and the position of the object in the scene, you can do the following:

ObjectA.transform.position.y

The same applies to the other parts of the Transform component.

ObjectA.transform.rotation

Tags

In developing your game, you can use the Tag characteristic to assign to one or more GameObjects. For example, you can use the “Player” Tag to select player-controlled characters, and for those that players do not control, you can use the “Enemy” Tag. Also, for the armor and all the assets that the player must collect in the gameplay, you can use the “Collectable” Tag.

In order not to manually add GameObjects to a script’s exposed properties using drag and drop, you can successfully use Tag features.

You can also apply the GameObject.FindWithTag () function to find objects with the desired tag. Tags are helpful for triggers in Collider to find out whether the player is interacting with an enemy, a prop, or a collectable, for example.

A GameObject can only have one Tag assigned to it.

Unity includes some built-in Tags which do not appear in the Tag Manager:

  • Untagged
  • Respawn
  • Finish
  • EditorOnly
  • MainCamera
  • Player
  • GameController

Layers

To use Layers in your game development, the first step is to create a new layer that you can then assign to a GameObject. To do this, open the Tags and Layers window (main menu: Edit> Project Settings, then select the Tags and Layers category). After creating the Layer, you can assign it to several GameObjects, but keep in mind that each GameObject can only be assigned one Layer.

GetComponent method

Using gameObject.GetComponent will return the first component that is found and the order is undefined.  For example, let’s say that the “objectA” above has an AudioSource type component assigned to it, and we would like to access that component and adjust the volume. To do this, you can use this method:

objectA.GetComponent ();

This provides us the AudioSource reference assigned to it. If the GameObject has more than one such component, we can do the following:

objectA.GetComponents ();

SetActive method

To enable or disable a GameObject, you must refer to the given value of true or false. For example, if a parent is not active, the GameObject may be inactive. If this happens, accessing the SetActive method will not activate the GameObject, but only set the local state of the GameObject.

To activate it, you can use this method:

objectA.SetActive (true);

To deactivate it: 

objectA.SetActive (false);

Starloop Studios is proud to be part of the Magic Media group, an international group specialising in entertainment and gaming industry services. Our wide range of offerings includes VFX, blockchain gaming, game art services, and more. Reach out today to avail of our expertise and A-Z services for your projects.

Get in Touch