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