Unity Можно ли получить объект по значению компонента (скрипта)

430
29 января 2017, 12:04

Имеется префаб, на котором висит скрипт с генерацией id для каждого созданного объекта. При запуске сцены генерируется 20 объектов с id (1,2,3...20). Цель: получить конкретный объект по id (со скрипта). Это нужно для удаления. Вопрос: можно ли это сделать, если да, то как? C#

Answer 1

В скрипте иметь словарь, где ключом будет идентификатор, а значением — сгенерированный объект.

Dictionary<int, GameObject> myObjects; 

При инстанциировании складываем туда

var myObj = Instantiate(prefab, new Vector3(2.0f, 0, 0), Quaternion.identity);
myObjects.Add(1, myObj);

Далее когда нужно удалить по id, то обратится к словарю и удалить его оттуда и со сцены.

var objToRemove = myObjects[1];
dic.RemoveAt(1);
Destroy(objToRemove);

Вроде как-то так.

Answer 2

Если у тебя есть инстанс скрипта то

instance.gameObject.Destroy();

Так же можешь сделать public static List с твоими обьектами. А внутри обьекта уже иметь айдишник.

Тогда достаточно просто найти в этом листе через Linq обьект с нужным айдишником и его дестройнуть.

READ ALSO
Как скопировать часть изображения из bitmap&#39;а в Texture2D?

Как скопировать часть изображения из bitmap'а в Texture2D?

Мне необходимо скопировать часть изображения из bitmap'a в Texture2DКак скопировать именно часть изображения из Bitmap'a мне известно, однако как сконвертировать...

502
Как отловить изменение ItemsSource в WPF DataGrid после редактирования ячейки

Как отловить изменение ItemsSource в WPF DataGrid после редактирования ячейки

Для WPF DataGrid привязан источник данных ObservableCollection<>Колонки заданы как обычные DataGridTextColumn

916
VK, обработка сообщения

VK, обработка сообщения

Пишу простой бот ВК на С#, отвечающий в конфе от моего имени на фразу "Евгений, погода"Не пойму немного, как отлавливать прием сообщения? Не подскажите...

542
Prism DelegateCommand

Prism DelegateCommand

Добрый день, возникла внезапная проблема, может кто сталкивался

373