value | 要设置的活动状态,其中true 将GameObject设置为活动状态,而false 将其设置为非活动状态。 |
根据提供的参数的值激活或停用GameObject。
SetActive
仅设置GameObject的本地状态,由GameObject.activeSelf的值表示。它不会激活GameObject.activeInHierarchy为false
的GameObject,因为场景层次结构中的父对象处于非活动状态。
停用GameObject会禁用每个组件,包括附加的渲染器、碰撞器、刚体和脚本。例如,Unity 将不再调用停用GameObject附加的脚本上的MonoBehaviour.Update。停用GameObject还会停止附加到它的所有协程。
使用值为true
的SetActive
调用附加到GameObject的脚本上的MonoBehaviour.OnEnable,而使用值为false
的SetActive
调用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; } } }