创建结构体,命名为ItemSlot

添加四个变量分别是Type、Name、Icon、Count


类型分别是itembase类型的引用 ,text,texture 2d的对象引用和整数类型。



创建SurvivalPlayState蓝图


打开项目设置,将其设置为默认的playstate
为背包创建一个类,类型是object,命名为bag


增加一个变量,整数型,命名capacity,含义为背包的最大库存(重量),初始值为100


增加一个变量,整数型,命名Load,含义为目前的库存

增加一个数组,类型是ItemSlot,命名为Content


在我们创建的palystate的蓝图中,创建bag蓝图的引用。


我们在itembase里面,添加Weight变量,int类型,表示重量

为每个itembase的子类设置重量
在背包蓝图里添加函数TestCapacity,用来检查背包是否还能装得下

添加一个参数 ,类型为我们刚创建的结构体

把该参数break一下。


获取item类型默认的重量

数量*默认重量=总重量

比较重量

添加输出值

在添加一个输出值

赋值

添加TryAddItem函数

设置输入输出值

首先判断是否可以添加

不可以的话直接返回false,可以的话直接做下一个逻辑。

可以的话,就通过便利,查看背包里是否有该类物品,类型相等,代表已经存在。

存在数量就+1


不存在就新增一个新item

在这个里面初始化bag变量


现在我们修改一下之前写过的代码,把pickable的ui控制蓝图绑定的事件修改一下。


为了方便起见,我们再创建一个结构体,命名为ItemInfo,里面存放ItemBase的三个属性。

我们在 ItemBase蓝图里面添加ItemInfo结构体类型的变量

之前三个变量就可以删了

进入小白人蓝图,添加SurvivalPlayState类型的变量,在开始事件中进行初始化
构建pickup事件
修改pickup的参数类型

拾取逻辑


在itembase中,修改接口事件

此时预置物的按钮,就不需要这俩了

测试成功