我想我可能知道我的问题是什么,但我不知道如何解决它。我试过谷歌,但不看......
假设我有3个班级;菜单,商店和播放器。当您从商店购买商品时,它会被添加到播放器类中的库存中,然后您返回主菜单。然后,您可以选择查看广告资源。
我已经完成了所有这些工作,但是当我选择在主菜单中查看我的库存时,它内部没有任何内容。我知道它有效,因为我在购买物品后已经在店里打印了我的库存。
我认为这是因为我在菜单和商店课程中制作了一个新对象?
Menu.cs
Shop shop = new Shop();
Player player = new Player();
Shop.cs
Menu menu = new Menu();
Player player = new Player();
我认为问题是当我在用户购买物品后将用户送回菜单时,会创建一个新的Player对象,将所有变量设置为默认值?
我不太了解类和对象,就像我从实践中学到的那样。但有没有办法让它一旦你回到菜单就不会自动重置?
答案 0 :(得分:2)
是的,当您执行new Anything()
时,它是一个带有默认选项和值的全新实例。
解决此问题的一种方法是在购买时将Player
实例传递给Shop
。 (商店不需要在其中声明玩家,只需要使用现有玩家)。
在传递给Player
的{{1}}中,您将购买的商品添加到广告资源中。
答案 1 :(得分:2)
不是在每个类中存储Player对象,而是在一些重要的类(例如主菜单?主类?)中只创建一个Player对象(即仅使用new Player()
)。
然后,要从Shop和Menu访问此播放器,请将其作为构造函数参数传递:
private Player player;
public Shop(Player player, OtherStuff here) {
this.player = player;
}