将重复的Actor添加到舞台不会购买

时间:2019-03-28 18:55:34

标签: java libgdx

所以我写了一个基本的库存系统,当我添加一个项目时,它被正确添加了,这很好,但是当我去从库存中移除项目时,它会检查它是否可堆叠,以及它的数量是否大于1,因此当我放下物品时,我看到物品的数量减少了1,但是物品没有被放置在玩家身上,只有物品数量为1时它才获得位置,并且我再次放下,它将从库存中移除并掉落在玩家所在的位置。

public void removeItem(int index) {
        if (Objects.nonNull(slots[index])) {
            slots[index].setX(player.getX());
            slots[index].setY(player.getY());

            if (slots[index].isStackable() && slots[index].getAmount() > 1) {
                slots[index].setAmount(slots[index].getAmount() - 1);
                Item dropItem = slots[index];

                dropItem.setAmount(1);
                StageManager.addActor(dropItem);
            } else {
                StageManager.addActor(slots[index]);
                slots[index] = null;
            }
        }
    }

似乎只有else语句会将物品放到播放器上

} else {
    StageManager.addActor(slots[index]);
    slots[index] = null;
}

我不确定为什么它不像它那样-1,但是为什么当它不为null时为什么不将dropItem放到播放器上。

1 个答案:

答案 0 :(得分:0)

所以我只需要创建一个新项目。

public void removeItem(int index) {
        if (Objects.nonNull(slots[index])) {
            slots[index].setX(player.getX());
            slots[index].setY(player.getY());

            if (slots[index].isStackable() && slots[index].getAmount() > 1) {
                slots[index].setAmount(slots[index].getAmount() - 1);

                Item dropItem = new Item(slots[index].getId(), slots[index].getEntityType(), slots[index].getName(), (int)player.getX(), (int)player.getY(),
                        slots[index].getImage(), slots[index].getItemType(), slots[index].getSlotType(), slots[index].getLevel(), slots[index].getRarity(),
                        slots[index].getWeight(), 1, slots[index].getDescription(), slots[index].getAttributes(), slots[index].getShapeRenderer(), slots[index].isStackable());

                StageManager.addActor(dropItem);
            } else {
                StageManager.addActor(slots[index]);
                slots[index] = null;
            }
        }
    }