# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hopemoore.gitbook.io/unity-basics/create/create-game-objects/unhiding-objects.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
