如何解决在 Godot GDscript 中返回 null 的函数
我目前正在开发一个物品栏系统,我正在尝试在玩家可以使用布尔值选择它之前检查该物品是否可以进入物品栏或快捷栏。唯一的问题是检查项目是否可以堆叠或占用插槽的函数总是返回空值。希望对此有任何见解!
项目脚本:
extends KinematicBody2D
const ACCELERATION = 600
const MAX_SPEED = 600
var velocity = Vector2.ZERO
var itemName
var itemQuantity = 1
var player = null
var beingPickedUp = false
var distanceToDestroyItem = 10
var destroyItemCounter = true
func initialize(name,quantity):
itemName = String(name)
itemQuantity = quantity
$Sprite.texture = load("res://Inventory/Items/ItemIcons/" + itemName + ".png")
func _physics_process(delta):
if beingPickedUp == false:
velocity = velocity.move_toward(Vector2.ZERO,ACCELERATION * delta)
else:
var distance = global_position.distance_to(player.global_position)
destroyItemCounter = PlayerInventory.checkToAddItem(itemName,itemQuantity)
if destroyItemCounter == true:
var direction = global_position.direction_to(player.global_position)
velocity = velocity.move_toward(direction * MAX_SPEED,ACCELERATION * delta)
velocity = move_and_slide(velocity,Vector2.UP)
distance = global_position.distance_to(player.global_position)
if distance < distanceToDestroyItem:
PlayerInventory.addItem(itemName,itemQuantity)
queue_free()
else:
beingPickedUp = false
velocity = move_and_slide(velocity,Vector2.UP)
func ItemPickUp(body):
player = body
beingPickedUp = true
它调用的函数:
func checkToAddItem(itemName,itemQuantity,slotType = inventory):
for item in slotType:
if slotType[item][0] == itemName:
var stackSize = int(JsonData.itemData[itemName]["StackSize"])
var ableToStack = stackSize - slotType[item][1]
if ableToStack >= itemQuantity:
return true
else:
itemQuantity = itemQuantity - ableToStack
if slotType == inventory:
for i in range(INVENTORY_SLOTS):
if inventory.has(i) == false:
return true
if i == INVENTORY_SLOTS - 1:
checkToAddItem(itemName,hotbar)
else:
for o in range(HOTBAR_SLOTS):
if hotbar.has(o) == false:
return true
if o == HOTBAR_SLOTS - 1:
return false
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。