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

时间:2019-10-16 17:16:44

标签: c# android unity3d

我正在与Unity一起使用RPG机制制作Clicker游戏。我需要有关库存(或更确切地说是物料系统)背后逻辑的一些帮助。我的问题是,它需要具有以下功能:

  • 我想要一种易于管理和修改物品及其值的方法,即使它们是自定义的(例如,当我更改基本dmg时,某物品做了20基础dmg并且被玩家修改为+10 dmg到30,则玩家项总共应该进行40 dmg的操作)
  • 一件物品需要有一些用于放置贴纸或附件之类的物品的插槽,这些物品本身也是物品。

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

比方说,我创建了一个商品类,并且我的第一个商品名为“ Stick”。我有它的实例,想将此项目添加到lootcrates的下拉列表中。我如何“通过”它?我的基本想法是创建它的实例的副本,但是之后我将无法在不编辑原始实例和副本本身的情况下更改其值。这也指库存本身,当我保存自定义项目实例的副本时,如何保持它们“链接”?

1 个答案:

答案 0 :(得分:0)

这可能无法回答您提出的所有问题,但我会尝试为您提供一个起点。您将要为所有库存项目创建一个基类或接口,其中将包含所有项目共享的属性(例如ID):

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

然后,更具体类型的物品将从Item类继承,也许是一种武器。

  

我想要一种易于管理和修改物品及其值的方法,即使它们是自定义的(例如,当我更改基本dmg时,某物品做了20基础dmg并且被玩家修改为+10 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)。


我希望这足以让您入门。如有任何问题,请告诉我。