如何传递和存储项目实例?



我正在使用Unity构建一个带有RPG机制的点击游戏。我需要一些关于库存(或者更准确地说(项目系统背后的逻辑的帮助。我的问题是,它需要具有以下功能:

  • 我想要一种方法来轻松管理和修改物品及其值,即使它们是自定义的(例如,当一个物品做 20 个基础 dmg 并且被玩家修改为 +10 dmg 时,当我将基本 dmg 更改为 30 时,玩家物品总共应该做 40 dmg(
  • 物品需要有某种插槽来放置贴纸或附件等东西,这些东西本身也是物品。

我需要有关如何创建此系统的起点,因为我仍然需要一些有关使用类的信息。

假设我创建了一个项目类,我的第一个项目名为"Stick"。我有它的实例,并希望将此项目添加到战利品的下拉列表中。如何"通过"它?我的基本想法是创建其实例的副本,但随后我将失去在不编辑原始实例和副本本身的情况下更改其值的能力。这也指库存本身,当我保存自定义项目实例的副本时,如何保持它们的"链接"?

这可能不会回答你问的所有问题,但我会试着给你一个起点。您需要为所有清单项创建一个基类或接口,其中包含所有物品共享的属性(如 ID(:

public class Item
{
public int Id { get; set; }
}

然后,更具体类型的物品将从Item类继承,例如武器。

我想要一种方法来轻松管理和修改物品及其值,即使它们是自定义的(例如,当一个物品做 20 个基础 dmg 并且被玩家修改为 +10 dmg 时,当我将基本 dmg 更改为 30 时,玩家物品总共应该做 40 dmg(

您的武器类别可能具有基础伤害值、伤害修正值和基于前两个计算的总伤害值:

public class Weapon : Item
{
public int BaseDamage { get; set; }
public int DamageModifier { get; set; }
public int TotalDamage => BaseDamage + DamageModifier;
}

物品需要有某种插槽来放置贴纸或附件等东西,这些东西本身也是物品。

你可以在这里创建一个接口(甚至把它移到你的基类中 - 我对你正在设计的系统不够了解,无法进行调用(,它将包含用于此目的的Item对象的集合:

public interface IAttachmentContainer
{
IEnumerable<Item> Attachments { get; set }
}

然后在任何可以包含附件的项上实现此接口。 至于持久性,您将需要研究某种类型的数据库系统(如评论中提到的Traendy(。


我希望这足以让你开始。如果您有任何问题,请告诉我。

最新更新