版本:Unity 6 (6000.0)
语言英语
  • C#

GameObject.SetActive

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void SetActive(bool value);

参数

value 要设置的活动状态,其中true将GameObject设置为活动状态,而false将其设置为非活动状态。

描述

根据提供的参数的值激活或停用GameObject。

SetActive仅设置GameObject的本地状态,由GameObject.activeSelf的值表示。它不会激活GameObject.activeInHierarchyfalse的GameObject,因为场景层次结构中的父对象处于非活动状态。

停用GameObject会禁用每个组件,包括附加的渲染器、碰撞器、刚体和脚本。例如,Unity 将不再调用停用GameObject附加的脚本上的MonoBehaviour.Update。停用GameObject还会停止附加到它的所有协程。

使用值为trueSetActive调用附加到GameObject的脚本上的MonoBehaviour.OnEnable,而使用值为falseSetActive调用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; } } }