Version: Unity 6 Preview (6000.0)
LanguageEnglish
  • C#

GameObject.SetActive

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Switch to Manual

Declaration

public void SetActive(bool value);

Parameters

value The active state to set, where true sets the GameObject to active and false sets it to inactive.

Description

Activates or deactivates the GameObject according to the value of the supplied parameter.

SetActive only sets the local state of the GameObject, represented by the value of GameObject.activeSelf. It does not activate a GameObject for which GameObject.activeInHierarchy is false because a parent object in the Scene hierarchy is inactive.

Deactivating a GameObject disables each component, including attached renderers, colliders, rigidbodies, and scripts. For example, Unity will no longer call MonoBehaviour.Update on a script attached to a deactivated GameObject. Deactivating a GameObject also stops all coroutines attached to it.

Calling SetActive with a value of true callsMonoBehaviour.OnEnable on scripts attached to the GameObject, while calling SetActive with a value of false calls MonoBehaviour.OnDisable.

using UnityEngine;

public class Example : MonoBehaviour { private GameObject[] cubes = new GameObject[10]; public float timer, interval = 2f;

void Start() { Vector3 pos = new Vector3(-5, 0, 0);

for (int i = 0; i < 10; i++) { cubes[i] = GameObject.CreatePrimitive(PrimitiveType.Cube); cubes[i].transform.position = pos; cubes[i].name = "Cube_" + i; pos.x++; } }

void Update() { timer += Time.deltaTime; if (timer >= interval) { for (int i = 0; i < 10; i++) { int randomValue = Random.Range(0, 2); if (randomValue == 0) { cubes[i].SetActive(false); } else cubes[i].SetActive(true); } timer = 0; } } }