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

GameObject.SetGameObjectsActive

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册

声明

public static void SetGameObjectsActive(NativeArray<int> instanceIDs, bool active);

声明

public static void SetGameObjectsActive(ReadOnlySpan<int> instanceIDs, bool active);

参数

instanceIDs 要激活或停用的 GameObjects 的实例 ID。
active 要设置的活动状态,其中 true 将 GameObjects 设置为活动状态,而 false 将它们设置为非活动状态。

描述

激活或停用由实例 ID 标识的多个 GameObjects。

使用 SetGameObjectsActive 批量激活或停用多个 GameObjects。

using System;
using Unity.Collections;
using UnityEngine;
using UnityEngine.InputSystem;

//Add this script to a GameObject. This example requires the Input System package.

public class DeactivateGOComponent : MonoBehaviour { public GameObject prefab; public int count = 100;

NativeArray<int> m_SpawnedInstanceIDsNative; int[] m_SpawnedInstanceIDs; bool m_SetActive = false; bool m_UseSlowMethod = false; void Start() { m_SpawnedInstanceIDs = new int[count]; //Spawn some prefabs for (int i = 0; i < count; i++) { //Save their instanceID m_SpawnedInstanceIDs[i] = Instantiate(prefab).GetInstanceID(); } //Create native array with instanceIDs m_SpawnedInstanceIDsNative = new NativeArray<int>(m_SpawnedInstanceIDs, Allocator.Persistent); }

void Update() { if (Keyboard.current[Key.A].wasPressedThisFrame) { if (m_UseSlowMethod) { SetActiveSlow(m_SetActive); } else { SetActiveFast(m_SpawnedInstanceIDsNative, m_SetActive); } m_SetActive = !m_SetActive; } } void SetActiveSlow(bool setActive) { foreach(int id in m_SpawnedInstanceIDs) { ((GameObject)Resources.InstanceIDToObject(id)).SetActive(setActive); } } static void SetActiveFast(NativeArray<int> ids, bool setActive) { GameObject.SetGameObjectsActive(ids, setActive); }

void OnDestroy() { m_SpawnedInstanceIDsNative.Dispose(); } }