> For the complete documentation index, see [llms.txt](https://hopemoore.gitbook.io/unity-basics/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hopemoore.gitbook.io/unity-basics/create/create-game-objects/unhiding-objects.md).

# Unhiding/Hiding Objects During Gameplay

## Using SetActive()

Use the script below to make a game object visible and its components available:&#x20;

```csharp
this.gameObject.SetActive(true);
```

And unavailable:

```csharp
this.gameObject.SetActive(false);
```

Swap "this" with the variable name for a gameObject type.

**Note:** "gameObject" is only needed if the variable used is of a different type.&#x20;

{% hint style="warning" %}
Scripts cannot access components of objects that are not active.
{% endhint %}

## Example Code

Examples of a game object called "thing" that appears when "F" is pressed and disappears when "X" is pressed:

### **Example 1** (using a gameObject type):

```csharp
using UnityEngine;

public class AppearDisappear : MonoBehaviour
{
    public GameObject thing;
    
    void Update
    {
        if (Input.GetKeyDown(KeyCode.F) {
            thing.SetActive(true);
        }
        
        if (Input.GetKeyDown(KeyCode.X) {
            thing.SetActive(false);
        }
    }
}
```

### **Example 2** (using a variable of another type):

```csharp
using UnityEngine;

public class AppearDisappear : MonoBehaviour
{
    public Transform thing;
    
    void Update
    {
        if (Input.GetKeyDown(KeyCode.F) {
            thing.gameObject.SetActive(true);
        }
        
        if (Input.GetKeyDown(KeyCode.X) {
            thing.gameObject.SetActive(false);
        }
    }
}
```

{% hint style="danger" %}
**REMEMBER:** Hiding a parent object will hide its children.
{% endhint %}

## **Checking If the Game Object is Active**

This code can help if you want things to behave differently if an object is visible or not.

```csharp
this.gameObject.activeSelf
```

It is read-only (you cannot directly change this value) and will return true if active and false if not.

In the Hierarchy window, hidden / inactive objects will appear grayed out:

![](/files/-M9KQThPRzYbTQ6hEx9D)

In the Inspector window, the checkbox next to the object's name controls the active state of the object. Example of an inactive object:

![](/files/-M9KQoarlVefOT-mceEi)

{% hint style="warning" %}
REMEMBER: Add the script to a game object in the scene. It will not work if it does not exist in the game.
{% endhint %}

{% content-ref url="/pages/-M8XUYM91gnFuvEZIS0q" %}
[Updating Game Objects](/unity-basics/select/update-game-objects.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M8XUbrvA1IrYmja0qFo" %}
[Deleting Game Objects](/unity-basics/delete/delete-game-objects.md)
{% endcontent-ref %}
