创建结构体,命名为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中,修改接口事件
此时预置物的按钮,就不需要这俩了
测试成功