我看到做你所问的2种方式。
1路
GameObject[] walls;
walls = GameObject.FindGameObjectsWithTag("Wall");
foreach (GameObject wall in walls)
{
wall.setActive(true);
}
你将要做的,除了代码,是分配给那些反对正确的标签(如“长城”,“窗口”,“WatheverYouWillNeed”)。所以你可以通过给他们某种顺序(带标签)轻松找到所有对象。
最佳实践尖端
您可能要创建一个静态类“标签”,并设置公共常量字符串类中,所有的标签名称。
public static class Tags
{
public static const WINDOW_TAG = "Window";
// ... more tags
}
第二方式
如果你想设置什么是唯一的“知名度”,您可能希望只修改照相机标记的渲染。它甚至不需要任何循环。当你想查看窗口时,你只需告诉你的相机渲染标签“窗口”。
// Turns on Windows Layer on mask using an OR operation
private void Show()
{
camera.cullingMask |= 1 << LayerMask.NameToLayer("Window");
}
// Turn off the bit using an AND operation with the complement of the shifted int:
private void Hide()
{
camera.cullingMask &= ~(1 << LayerMask.NameToLayer("Window"));
}
它可能看起来很奇怪的第二个选项,但请记住,cullingMask位构成的,每一点是你的标签定义的层。 “Everything”剔除掩码是111111.例如,如果您只想看到Window,并且窗口是最后一个元素,则您的剔除掩码看起来像0000001
希望它有帮助! :)