Примечание. Это не домашнее задание или не работа. Это личная игровая механика, над которой я работаю. Я могу выполнить одно и два. Три - вот где я застрял. Я не уверен, использовать ли вектор или список, и я не знаю, как ссылаться на конкретный объект в этом векторе или списке в Unity C# (с использованием MonoDevelop) (шаблон Singleton).
instance = Instantiate (prefab, spawnPoint.position, spawnPoint.rotation);
instance.GetComponent<Camera> ().enabled = false;
cameraTwo = instance.GetComponent<Camera> ();
Переменная cameraTwo должна быть установлена для компонента объекта в векторе или списке.
«Вот где я застрял» Пожалуйста, покажите свой код.
instance = Instantiate (префаб, spawnPoint.position, spawnPoint.rotation); instance.GetComponent <Camera> () .enabled = false; cameraTwo = instance.GetComponent <Camera> ();
Переменная cameraTwo должна быть установлена для компонента объекта в векторе или списке.
Какого типа предметы в вашем списке? Говоря о том, что переменная cameraTwo должна быть установлена для компонента объекта, вы имеете в виду, что элементы в вашем списке имеют элементы типа Camera, или вам нужно динамически добавлять новый компонент в GameObjects в вашем списке (с GameObject. AddComponent)
@MikkoKoivisto В моем списке есть компоненты камеры, к которым мне нужно получить доступ. Проблема заключается в том, чтобы указать на этот конкретный объект, чтобы захватить его компонент.
The items in my list have camera components that I need to access. The problem is having to point to that specific object to grab its component.
Вы можете использовать System.Linq для поиска элементов, у которых есть компонент Camera.
using System.Linq;
...
List<GameObject> myList = new List<GameObject>();
public GameObject GetGameObjectWithCameraComponent() {
return myList.FirstOrDefault(item => item.GetComponent<Camera>() != null);
}
public IEnumerable<GameObject> GetAllGameObjectsWithCameraComponent() {
return myList.Where(item => item.GetComponent<Camera>() != null);
}
Список [0] .GetComponent (); Задача решена. Спасибо за ваши ответы.
Не забудьте проверить List.Length или List.Count, чтобы избежать NPE.
Добро пожаловать в Stack Overflow! Убедитесь, что вы прочитали разделы Как спросить. В частности, в вашем случае нам понадобится минимальный воспроизводимый пример; в противном случае ваш вопрос будет закрыт как не по теме или слишком широкий.