我看到做你所問的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
希望它有幫助! :)