Задать вопрос

Как принято делать фабрику предметов?

Как принято создавать фабрику для предметов? Например, возьмем исходные данные:
Есть меч и копье. Они занесены в префаб, имеют разные спрайты и тд., и на них висит скрипт, допустим:
class Weapon : MonoBehaviour
{
int id;
int damage;
}

И вот возникает ситуация, что у одного персонажа в кармане лежит, допустим, 3 меча. Нам нужно создать клон префаба и сразу задать ему физический вид, но переместить объект куда-нибудь далеко, чтобы игрок его не увидел и при надобности перемещать к игроку? Просто таким образом выходит, что каждый объект имеет физическое проявление, что не очень хорошо. Либо предмет не должен иметь физического проявления и быть представленным кодом:
public class Weapon
{
int id;
int damage;
public Weapon(int damage)
{
this.damage = damage;
id = ++id;
}
}

Но тогда возникает вопрос, а как быть, если я хочу хранить спрайты оружия и их в модель меча передавать? Ведь без MonoBehaviour я не смогу назначить спрайты в инспекторе.

Т.е. выходит, что обязательно предмет будет иметь физические проявления, даже если он просто лежит в кармане (вернее, в кармане ссылка на предмет)?
  • Вопрос задан
  • 1469 просмотров
Подписаться 7 Оценить Комментировать
Решение пользователя Denis Gaydak К ответам на вопрос (2)
MrMureno
@MrMureno Куратор тега Unity
VR for all
"Но тогда возникает вопрос, а как быть, если я хочу хранить спрайты оружия и их в модель меча передавать? Ведь без MonoBehaviour я не смогу назначить спрайты в инспекторе."

Предложил бы отдельно хранить этакие "Ресурсы/Ассеты для оружия".
Какой-нибудь список где по айдишнику оружия, вы можете достать спраит, описание текстовое, модель..что угодно.
Методы для работы со списком возможно для удобства и всей этой инкапсуляции и тд.

Тогда логика оружия условно будет отделена от представления его. Хотите показать мечь - достали спраит из ресурсов - и показали его. а все остальное время храним набор айдишников.
Ответ написан
Комментировать