Как динамически создавать множество похожих предметов на сцене, но с разными данными?
Я делаю 2д игру. И суть вопроса вот в чём, у меня есть инвентарь и я хочу иметь возможность выбрасывать из него вещи. Но чтобы при этом создавалось что-то типа "рюкзачка" на полу. Вся сложность заключается в том, что скриптом можно создавать объекты только из префаба. И изменяя значение данных инвентаря этого "рюкзачка" это будет применяться для всех предметов на сцене так как префаб один. Сейчас у меня эти "рюкзачки" при создании имеют рандомный номер в названии, который я могу сохранять в массиве для сохранения и загрузки игры. Но хранить данные о всём объекте в одной строке это максимально неудобно. Хотелось чтобы каждый созданный объект имел собственный массив предметов чтобы уменьшить масштаб его элементов до отдельных слотов. Я смог это сделать на заранее созданных объектах в редакторе, с разными именами, но одним скриптом. Может есть способ создавать объект не из префаба, а как в редакторе? Или есть более простые способы как мне реализовать такие вот хранилища на земле, которые будут динамически создаваться во время игры из скрипта? Также нужна возможность изменять значения на объекте, чтобы можно было класть предметы в уже созданный рюкзак или же забирать из него в инвентаря.
Немного не понял вопрос и в чем проблема. Создавать объекты не из префаба можно через new gameobject, задавать данные объекту из префаба так же можно спокойно, не вижу проблем. В чем сложность то?
Farawa, префаб идёт в топку. Как я понял есть некий GameObject Constructor, который должен подойти в этой ситуации. Спасибо за совет насчёт new GameObject.
GFX Data, при использовании префаба создаётся его клон и создаётся один массив на всех. То есть при изменении значений они применяются к головному префабу и всем клонам соответственно.
Я уже сделал систему лутания схожих объектов с одним скриптом, но они уже расположены на сцене и имеют разные названия, например, object (01), object (02) и так далее. И там всё работает, массив у всех свой как и другие поля.
GFX Data, Они у тебя созданы и настроены в Эдиторе или скриптом создаются? Просто я пробовал создавать экземпляр префаба и ставить в нём значения через скрипт, но они уходили в главный префаб)
В момент выпадения рюкзачка ты решаешь что он будет содержать.
1. в него кладешь конкретные предметы на этапе создания (сцены или префаба). Предполагаю такая возможность есть.
2. либо кладешь в него динамически. Например через псевдо-предметы которые на самом деле описания предмета, а не сам предмет. Например: тип=меч, уровень=80, остальное=рандом. Или коллекция из набора предметов.
Короче говоря, всё через код. В момент выпадения рюкзачка ты определяешь что в нём содержится. Осталось лишь определить как тебе это будет удобно сделать.
Обычно делают базу предметов. Их коллекции. Выборки с фильтром. И генераторы предметов - это позволяет заполнить любой рюкзачок.
Я по правде уже сделал систему через создание нового объекта. Так, что конечно спасибо, но решение я уже нашёл. Скорее всего не самое лучшее решение, но я как начинающий смог реализовать пока так) Получилось неплохо со стороны, но что твориться в коде). Нажимаешь выкинуть и под тобой появляется рюкзак с выкинитым предметом, выкидываешь ещё, они там появляются. Если рюкзак оказывается полностью пустым, то он удаляется и его файлы сохранения тоже.