我开始制作一款RPG游戏,游戏世界中会有一些玩家可以拾取的物品,可能是散落的物品,也可能是箱子之类的容器里的物品。具体来说,如何实现拾取这些物品并添加到玩家库存中?比如只是增加或减少物品的数量。
举个例子,箱子里有一瓶生命药水。我希望玩家拾取它后,它被添加到库存中,同时箱子里该物品的数量减少。我需要一个能存储生命药水信息及其数量的东西,还要另一个能存储玩家已有所有物品及数量的列表。
考虑这种设置:
箱子中的生命药水:30 | 玩家生命药水:0
拾取1瓶 → 箱子生命药水:29 | 玩家生命药水:1
再拾取1瓶 → 箱子生命药水:28 | 玩家生命药水:2
所以我原本考虑使用Scriptable Object,但它不存储独立数据,所以所有生命药水会共享同一个数量,除非我创建单独的实例。如果我想要一个箱子有3瓶药水,另一个箱子有2瓶,我想每个箱子都需要单独的生命药水Scriptable Object实例。
但对于容器(比如箱子)中的物品,我还需要一种方式来设置箱子里每个物品的数量,以防玩家只从中取走一个物品。显然,如果我用一个Scriptable Object并设置固定数量,改变这个数量,所有相同的Scriptable Object都会被改变。所以这行不通。
目前,我有一个单独的生命药水SO,数值为1。如果玩家拾取它,我会检查玩家是否已经拥有一个,如果没有,就创建一个新的SO实例放入玩家库存。这适用于单个散落的物品,但不适用于容器中的物品。
有没有更好的方法?
评论 (0)