0

我想我可能知道我的问题是什么,但我不知道如何解决它。我试着google了一下,但是没有...

假设我有 3 节课;菜单、商店和播放器。当您从商店购买东西时,它会被添加到玩家类的库存中,然后您返回主菜单。然后,您选择查看您的库存。

我已经完成了所有这些工作,但是当我选择在主菜单中查看我的库存时,里面什么都没有。我知道它有效,因为我在购买商品后已在商店打印了我的库存。

我认为这是因为我在菜单和商店类中创建了一个新对象?

菜单.cs

Shop shop = new Shop();
Player player = new Player();

商店.cs

Menu menu = new Menu();
Player player = new Player();

我认为问题是当我在用户购买商品后将他们送回菜单时,它会创建一个新的 Player 对象,将他们的所有变量设置回默认值?

正如我边做边学一样,我对类和对象了解不多。但是有没有办法让它在你返回菜单后不会自行重置?

4

2 回答 2

2

Yes, when you do new Anything(), it's a fresh new instance with default options and values.

One way to solve it is to pass the Player instance to the Shop when you buy. (Shop doesn't need to have a player declared inside it, just need to use an existing player). And in that Player you passed to the Shop, you add the things bought to the inventory.

于 2013-04-19T16:52:48.703 回答
2

与其在每个类中存储 Player 对象,不如在某个重要的类(例如主菜单?主类?)中只创建一个 Player 对象(即new Player()只使用一次)。

然后,要从您的 Shop 和 Menu 访问此 Player,请将其作为构造函数参数传入:

private Player player;

public Shop(Player player, OtherStuff here) {
    this.player = player;
}
于 2013-04-19T16:54:45.437 回答