[Opsive - ultimate inventory system] Item Info

英文原文:https://opsive.com/support/documentation/ultimate-inventory-system/item/item-info/

ITEM INFO

Item Info 是一个包含有关Item的有用信息的结构。 要了解它为何有用,了解物品、物品数量、物品堆栈和物品信息之间的差异非常重要。

Item

Item是在运行时使用 Item Definition 创建的对象。 它可以是唯一/通用和可变/不可变的。 对于唯一可变的 Item,它们被赋予唯一的 ID。 这意味着永远不会有两个 Item 具有相同的 ID,因此它们很容易区分。

在不可变的情况下,该 Item 在运行时永远不会改变,因此为了减少内存使用,使用单个对象。 例如,如果“Apple”设置为“不可变”,则相同的“Apple”引用将在任何地方使用,无论是皮卡、玩家库存、商店等。因此,不可能区分“Apple”和“Apple”。 这就是Item Stacks 和 Item Info 很有用的原因,因为它们将有助于确定对象引用。

Item Amount

项目金额是一个包含项目和金额的简单结构。 除了数量之外,这不会向我们提供有关该商品的更多信息。 它通常用于序列化检查器或属性中的数据。 例如,库存项目收集检查器显示项目数量列表。

项目数量不应与项目堆栈混淆,项目堆栈是一个类(而不是结构)并且需要项目集合。

Item Stack

物品堆栈是存储物品数量的对象。 它链接到一个项目集合,如果没有它就不应使用。

项目集合由项目堆栈列表组成。 默认项目集合允许每个项目有一个项目堆栈,但在多项目集合的情况下,每个项目可能有多个项目堆栈。 例如,您可能有两堆“5 个苹果”和“10 个苹果”。 “Apple”项目无法区分,因为它们是相同的,但堆栈不同并且每个都有自己的引用。 例如,如果您希望删除“3 个苹果”,您可以选择从“5 个苹果”或“10 个苹果”堆栈中删除。

在某些情况下,您需要指定应在哪个项目堆栈中添加或删除项目,但有时您可能不关心,或者您可能根本没有该信息。 这就是我们使用 Item Info 的原因之一,它允许我们使用物品堆栈定义物品数量。

Item Info

Item Info 是一个结构体,包含以下信息:

  • 项目金额:项目和金额。
  • 物品堆栈:该物品来自或将要到达的物品堆栈。
  • 项目集合:项目来自或将要到达的项目集合。

物品信息提供了有关物品及其来源的更多说明。 它不仅具有物品数量,还具有对物品堆栈和/或物品集合的引用。

例如,想象一个有 2 个物品堆栈的库存:

  • 第1堆:“5 个苹果”
  • 第2堆:“10个苹果”

其中 apple 是一个不可变的 Item。 如果您希望从堆栈 2 中删除“3 个苹果”,您可以指定一个项目信息。 将项目添加到项目集合时,您还可以指定项目来自何处以及应将其添加到哪个项目堆栈中。

在某些情况下,物品数量和物品堆栈物品数量可能不匹配。 例如,如果您有“5 个苹果”并使用“删除项目”函数删除“3 个苹果”,则结果将是可为空的项目信息(如果结果为空,则意味着没有发现要删除的项目):

  • 物品数量:3 个苹果(这是实际移除的数量)。
  • 物品堆栈:2 个苹果(这是物品被移除的物品堆栈)。
  • 项目集合:带有项目堆栈的项目集合。

另一个例子,如果从带有“5 苹果”的项目堆栈中删除“7 个苹果”,则结果将是一个Item info:

  • 物品数量:5 个苹果(这是实际移除的数量)。
  • 项目堆栈:空(这是项目被删除的项目堆栈,因为该堆栈中的所有项目都被删除,它不再是 ItemCollection 的一部分,并返回到池中)。
  • 项目集合:从中删除项目的项目集合。

API

您可以使用项目、数量、项目堆栈和项目集合的组合来创建项目信息。 这可以显式或隐式地完成。

new ItemInfo(itemAmount, itemCollection, itemStack);
new ItemInfo("MyItem", 1);
new ItemInfo(item, amount);
new ItemInfo(itemAmount);
new ItemInfo(itemStack);
new ItemInfo(itemAmount, otherItemInfo);
new ItemInfo(amount, otherItemInfo);
new ItemInfo(itemDefinition, amount);
new ItemInfo(otherItemInfo, amount);
new ItemInfo(amount, item);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值