Как включить и отключить несколько игровых объектов в Unity? - PullRequest
0 голосов
/ 15 апреля 2020

Мне нужно включить и отключить несколько игровых объектов, которые содержат одинаковый тег в Unity, используя C#. Спасибо

Ответы [ 3 ]

0 голосов
/ 15 апреля 2020

К сожалению, GameObject.FindGameObjectsWithTag () не возвращает неактивные игровые объекты. Таким образом, вы можете оставить все объекты активными до начала сцены и снова закрыть их в awake () или start ().

И у Unlimited 2020 есть функция, которая также находит неактивные игровые объекты.

0 голосов
/ 15 апреля 2020

Приведенные выше ответы портят мою камеру или что-то в этом роде. Итак, я сделал свой собственный код, основанный на ответах (который вставлен ниже) (опубликовать его для использования в будущем). Спасибо всем, кто ответил.


using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;


public class GameManager : MonoBehaviour
{

    public float restarttimer = 3f;
    public GameObject Ninja;
    public GameObject Covid;
    public GameObject[] Buttons;
    public GameObject[] Ground;
    public GameObject[] HP;
    public GameObject[] panelgo;

    void Start()
    {

        //Ninja
        Debug.Log("Generating Hero");
        Ninja.SetActive(true);
        //enemy
        Debug.Log("Generating Enemy");
        Covid.SetActive(true);
        //ground
        Debug.Log("Generating Ground");
        foreach (GameObject tagged in Ground)
        {
            tagged.SetActive(true); // or true
        }
        //HP
        foreach (GameObject tagged in HP)
        {
            tagged.SetActive(true); // or true
        }
        //Buttons
        foreach (GameObject tagged in Buttons)
        {
            tagged.SetActive(true); // or true
        }
        //GameOver
        foreach (GameObject tagged in panelgo)
        {
            tagged.SetActive(false); // or true
        }

    }
    public void GameOver()
    {
        Ninja.SetActive(false);
        Covid.SetActive(false);
        foreach (GameObject tagged in Ground)
        {
            tagged.SetActive(false); // or true
        }
        foreach (GameObject tagged in HP)
        {
            tagged.SetActive(false); // or true
        }
        foreach (GameObject tagged in Buttons)
        {
            tagged.SetActive(false); // or true
        }
        foreach (GameObject tagged in panelgo)
        {
            tagged.SetActive(true); // or true
        }
    }
    public void buttonrestart()
    {
        Invoke("restart", restarttimer);
    }
    public void restart()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }

}

PS COVID Смешное имя для врага;) ------------------- ЗАВЕРШЕНА НИТЯ ---------- ----------------

0 голосов
/ 15 апреля 2020

Вы можете использовать GameObject.FindGameObjectsWithTag () , чтобы вернуть массив всех игровых объектов с данным тегом, затем используйте GameObject.SetActive () , чтобы включить или отключить их. Что-то вроде:

string tag = ""; // your tag
GameObject[] taggedObjects = GameObject.FindGameObjectsWithTag(tag);
foreach (GameObject tagged in taggedObjects){
    tagged.Setactive(false); // or true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...