Я рекомендую использовать ScriptableObjects для создания предметов, доспехов и оружия. Вам придется потратить час или два на их изучение, но я думаю вы будете намного счастливее со своим дизайном, если пойдете по этому пути.
Думайте о ScriptableObject как о наборе свойств (имя предмета, стоимость, сила атаки, сила защиты и т. д.). Для каждого элемента в вашей игре вы создаете экземпляр ScriptableObject. Затем эти экземпляры ScriptableObject становятся активами в вашем проекте Unity, точно так же, как префаб или спрайт. Это означает, что вы можете перетаскивать их в своем проекте и назначать полям в MonoBehaviours. Это приведет к тому, что вы сможете назначать снаряжение персонажу, перетаскивая его из окна «Проект» в Инспектор.
Вот пример того, как это будет выглядеть
Item.cs
public class Item : ScriptableObject
{
public string name;
public int cost;
public Sprite image;
}
Оборудование.cs
public class Equipment : Item
{
public Slots slot;
}
public enum Slots
{
Body,
DoubleHanded,
Hands,
Head,
Feet,
Legs,
LeftHand,
RightHand
}
Оружие.cs
// CreateAssetMenu is what lets you create an instance of a Weapon in your Project
// view. Make a folder for your weapons, then right click inside that folder (in the
// Unity project view) and there should be a menu option for Equipment -> Create Weapon
[CreateAssetMenu(menuName = "Equipment/Create Weapon")]
public class Weapon : Equipment
{
public int attackPower;
public int attackSpeed;
public WeaponTypes weaponType;
}
public enum WeaponTypes
{
Axe,
Bow,
Sword
}
Armor.cs
[CreateAssetMenu(menuName = "Equipment/Create Armor")]
public class Armor : Equipment
{
public int defensePower;
}
Теперь создайте в своем проекте кучу оружия и доспехов.
![введите здесь описание изображения](https://i.stack.imgur.com/o2vBB.png)
Одна вещь, которая делает ScriptableObjects приятным, заключается в том, что вы можете редактировать их в своем Инспекторе, вместо того, чтобы делать это через код (хотя вы тоже можете это делать).
![введите здесь описание изображения](https://i.stack.imgur.com/iRDbz.png)
Теперь к вашему «персонажу» MonoBehaviour добавьте некоторые свойства снаряжения этого персонажа.
public class Character : MonoBehaviour
{
public Armor bodyArmor;
public Armor headArmor;
public Weapon weapon;
}
Теперь вы можете назначать свое оружие и доспехи своему персонажу в Инспекторе.
![введите здесь описание изображения](https://i.stack.imgur.com/lRXbL.png)
Вы, вероятно, захотите что-то более адаптированное к вашим потребностям, чем мой пример, но это основы. Я рекомендую потратить некоторое время на изучение ScriptableObjects. Прочитайте документы Unity, на которые я ссылался ранее, или посмотрите видео на YouTube.
Одной из сильных сторон Unity является то, что он позволяет выполнять большую часть проектирования и настройки через редактор, а не через код, и ScriptableObjects усиливает это.
person
Ben Rubin
schedule
07.03.2019