Я разрабатывал мини-RPG с низкополигональными активами. В настоящее время у меня есть рабочая система инвентаря с экипированными предметами игрока (такими как броня и оружие)
В blender я спроектировал сетки, чтобы иметь разные материальные области с надеждой на то, что они смогут реализовать какую-либо систему красителей. Каждое оборудование использует определенное количество общих материалов (первичная кожа, вторичная кожа и т. Д.)
У кого-нибудь есть предложения по реализации этой функции? Оборудование является объектом сценариев. Когда игрок нажимает «Использовать» в инвентаре, он попадает в EquipmentManager.cs, где он создается для игрока в качестве SkinnedMeshRenderer (исходный игровой объект - обычная сетка).
Красители также являются объектами сценариев с базовым Color32, который, как я понял, я мог бы просто изменить "mat.color = dye.color" из DyeManager.cs.
Проблема в том, что не все объекты оборудования используют одинаковые материалы. Поэтому при возврате массива Material [] порядок никогда не будет постоянным. Например, головной убор может иметь 4 материала (основной кожаный, кожаный второстепенный и т. Д.), В то время как головной убор может иметь только два (основной кожаный, специальный основной).
Я в основном просто ищу рекомендации о том, как кто-то может сделать эту работу во время выполнения. Раньше мне удавалось изменить материалы, но я испортил ВСЕ элементы оборудования с помощью .sharedMaterials, поскольку при его экипировке элемент меняется с обычного MeshRenderer на SkinnedMeshRenderer, и компилятор сказал мне, что я должен использовать sharedMaterials.