(下)实现游戏物品栏。丢弃物品功能。整理物品栏。在上一篇文章中,我们实现了将道具加入物品栏功能,接下来是实现丢弃已拾取的道具和整理物品栏的功能。首先来看看完成后的效果。
·为了确定玩家想丢弃的物品,可以使用RaycastTarget射线检测功能,它可以用于确定哪个UI元素被点击或触碰。
·当玩家想要丢弃道具时,程序会实现一个新对象,并作为自己的父对象,因此需要为Control添加一个新的tag标签:GeniParent,以便程序进行识别。
·在玩家选择道具要丢弃时,不需要角色移动,可以在Player脚本中创建一个方法。在特定的时候禁用玩家输入,避免出现不必要的角色移动情况。
·在UllnventoryBar脚本中创建一个字段,用于创建玩家要丢弃的槽位预制件。
·返回Unity引擎新建一个槽位预制件,作为玩家丢弃道具时使用的临时UI槽位,设置好画布尺寸和image属性。
·更新UllnventorySlot脚本,设置好Unity的拖拽接口,允许玩家从UI插槽中开始、继续、以及结束拖动一个物品。
·玩家拖拽物品栏中的道具进行丢弃行为,当玩家开始拖动物品时,此方禁用玩家输入,并实例化一个新的拖动物品对象。
·拖拽道具的过程中,脚本实时更新拖动物品的位置,使其跟随用户的鼠标或指针。
·完成丢弃行为时,先判断该道具是否可被丢弃,如果可以,将其放在鼠标位置,完成丢弃道具操作。
·在玩家完成丢弃道具的操作后,需要从库存中删除该物品。在InventoryManager脚本中新增一个删除物品的方法。如果物品栏中的物品还有库存,就减少该物品的数量:如果数量为0,就彻底从库存中删除该物品。
·运行游戏测试一下丢弃道具功能是否可以正常操作。
最后,我们来实现一个整理物品栏的功能:
·首先判断玩家的拖放操作是否结束,如果是,说明这个物品被拖放到了一个库存槽上,而不是直接被丢弃,那么就可以进行物品槽的交换动作。
·创建一个新方法Swaplnventoryltems来实现在给定的库存位置(例如玩家的库存、箱子等)中交换物品的功能。最后在Unity引擎中设置好槽位的ID编号就可以了。运行游戏来测试一下交换物品栏槽位整理道具的功能吧。