GameObject.SetActive
Declaration
public void SetActive(bool value);Параметры
| Параметр | Описание |
|---|---|
| значение | Активное состояние, которое нужно задать, где true устанавливает GameObject на активный, а false устанавливает его на неактивный. |
Описание
Активирует или деактивирует GameObject локально, в зависимости от значения предоставленного параметра.
SetActive задаёт только локальное состояние GameObject, представленное значением GameObject.activeSelf. Изменение значения GameObject.activeSelf не влияет на значение GameObject.activeInHierarchy, если activeInHierarchy является false из-за неактивного родительского объекта.
Отключение GameObject отключает каждый компонент, включая прикрепленные рендереры, коллайдеры, rigidbodies и скрипты. Например, Unity больше не будет вызывать MonoBehaviour.Update в скрипты, прикрепленном к отключенному GameObject. Отключение GameObject также останавливает все прикрепленные к нему сопутствующие процедуры.
Примечание: Если вызов SetActive изменяет значение GameObject.activeInHierarchy, это вызывает MonoBehaviour.OnEnable или MonoBehaviour.OnDisable на всех присоединенных MonoBehaviour скриптах.
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; } } }
Дополнительные ресурсы: GameObject.activeSelf, GameObject.SetGameObjectsActive