库存物品和库存消耗品的总览 (Inventory Items and Inventory Consumers Overview)
库存物品 (Inventory Items)
FPEInteractableInventoryItemScript组件用于创建"库存物品(Inventory Items)"。玩家可以通过各种方式收集和使用这些库存物品。
目录
[TOC]
总览 (Overview)
库存物品有点像可拾取道具,但是它们有一些特殊的属性。
最棒的是,“库存物品”可以被存放到玩家的库存(inventory)中。然后,玩家可以在库存中去查看、选择这些物品。并且玩家可以对“库存物品”进行交互,例如:用钥匙打开上锁的门,解开密码等。
在FPEGameMenu中有一个Items 选项卡,它会显示玩家存放到库存中的物品,并且玩家可以与库存中的物品交互(点击物品后,会弹出选择如何交互的界面)
FPEGameMenu:是这个插件提供的游戏中的菜单。在游戏中按ESC键,可以打开这个菜单。
创建一个库存物品 (Creating an Inventory Item)
随便丢一个3D模型(或者3D对象)到场景中,这里我们放一个Cube到场景中。
给这个对象添加一个碰撞器(例如Box Collider)。
将FPEInteractableInventoryItemScript组件(脚本)添加给这个Cube。
注意:添加FPEInteractableInventoryItemScript组件的时候,会自动在这个对象上添加一个RigidBody组件和一个AudioSource组件。
打开FPEInventoryManagerScript脚本,并将新的库存(Inventory)类型,添加到eInventoryItems枚举中,如下所示:
在FPEObjectTypeLookup脚本中,添加新的lookup值,如下所示。 这将确保让Save / Load系统知道:哪个预制体对应哪个库存类型。
inventoryItemsLookup.Add()方法,用于添加新的lookup值:
第1个参数:eInventoryItems枚举类型
第2个参数:预制体的名字
选中Cube,然后在“Inspector”面板中,向下滚动到“Inventory(库存)”的部分,并设置以下的选项:
- Inventory Item Type (库存物品类型):选择这个库存物品的类型。这个类型,就是你在上面的eInventoryItems枚举中,所创建的类型(例如:APPLE,MY_CUSTOM_INV_A等)
- Inventory Quantity (库存数量):当玩家存放这个“库存物品”时,要存放多少个这个物品。例如,1个电池预制体,在存放的时候,会被存放为1个电池。而一个绷带盒预制体,在存放的时候,可能会被存放为12个绷带。
- Inventory Get Sound (Optional) (库存获取声音):如果设置了这个选项,这个声音将覆盖物品默认的库存获取声音。
- Can Be Held (可以拿在手上):如果为true,那么玩家可以从库存中取出这物品,并将这个物品握在手中。
- Can Be Dropped (可以丢弃):如果为true,那么玩家可以从库存中移除这个物品(丢掉这个物品)。
- Can Be Consumed (可以消耗):如果为true,那么玩家可以使用(消耗)这个库存物品。 这需要Inventory Consumer (库存消耗品)
- Item Name (物品的名字):显示的名字。 例如: demoApple预制体的物品名称为“Apple”
- Item Image (物品的图片):物品在库存界面中,显示的图像。你可以参考"inventoryItemImageTemplate.psd" 这个PhotoShop的图片文件,你可以在FirstPersonExplorationKit/Textures/Templates/ 文件夹中找到。你可以使用FirstPersonExplorationKit/Scenes/Utility/文件夹中的 InventoryImageCapture.unity场景,来创建一致的图像。
- Item Description (物品的描述):对这个物品的描述,这个描述可以很长。 例如:demoApple预制体的描述是“这是一个苹果。 看起来很脆!”
- Stackable (可堆叠):如果为true,那么这个物品在库存中,可以堆叠起来。这意味着玩家可以拥有很多个这个物品,但是只占用一个物品位。这个物品真实的数量,会显示在物品位的右上角(例如,5个苹果,会放在一个物品位里,然后物品位的右上角会显示为“x5”)
如果你想要保存新的库存物品,请将库存物品的预制件放入Resources/InventoryItems/文件夹中。
如果你成功的创建了一个自定义的库存物品预制体,万岁!你真的超级棒哦!但是,如果你遇到了困难,或者出现了奇怪的错误,请发送电子邮件给我:support@whilefun.com。
库存消耗品(Inventory Consumers)
库存消耗品(FPERegioryConsumer脚本),是一个在使用关联的库存物品时,可以发生一些事情的脚本(例如:)。
下面我们来举一个例子:
我们为你提供了一个DemoRegioryConsumers脚本。这个脚本你可以在demoApple预制体(或者库存物品类型APPLE)上看到:
(要让这个脚本能够运行,需要勾选FPEInteractableInventoryItemScript组件中的Can Be Consumed选项)
所有的库存消耗品,都必须继承自FPEInventoryConsumer类,而且要实现并重写consumeItem()函数,并在调用consumeItem()函数中调用base.consumeItem()方法,如下所示:
当你的库存物品被消耗的时候,会消耗这个物品,并且调用consumeItem()函数,从而执行你自定义的消耗物品的代码。
Inventory Ideas - Combining Actions
FPEInteractableInventoryItemScript脚本中的变量(与库存相关的变量)
变量名———————— | 变量名的中文翻译———————— | 说明 |
---|---|---|
Inventory Item Type | 库存物品类型 | 选择这个库存物品的类型。 这个类型,就是你在上面的eInventoryItems枚举中,所创建的类型(例如:APPLE,MY_CUSTOM_INV_A等) |
Inventory Quantity | 库存数量 | 当玩家存放这个“库存物品”时,要存放多少个这个物品。 例如,1个电池预制体,在存放的时候,会被存放为1个电池。而一个绷带盒预制体,在存放的时候,可能会被存放为12个绷带。 |
Inventory Get Sound (Optional) | 库存获取声音 | 如果设置了这个选项,这个声音将覆盖物品默认的库存获取声音。 |
Can Be Held | 可以拿在手上 | 如果为true,那么玩家可以从库存中取出这物品,并将这个物品握在手中。 |
Can Be Dropped | 可以丢弃 | 如果为true,那么玩家可以从库存中移除这个物品(丢掉这个物品)。 |
Can Be Consumed | 可以消耗 | 如果为true,那么玩家可以使用(消耗)这个库存物品。 这需要Inventory Consumer (库存消耗品) |
Item Name | 物品的名字 | 显示的名字。 例如: demoApple预制体的物品名称为“Apple” |
Item Image | 物品的图片 | 物品在库存界面中,显示的图像。 你可以参考"inventoryItemImageTemplate.psd" 这个PhotoShop的图片文件,你可以在FirstPersonExplorationKit/Textures/Templates/ 文件夹中找到。 你可以使用FirstPersonExplorationKit/Scenes/Utility/文件夹中的 InventoryImageCapture.unity场景,来创建一致的图像。 |
Item Description | 物品的描述 | 对这个物品的描述,这个描述可以很长。 例如:demoApple预制体的描述是“这是一个苹果。 看起来很脆!” |
Stackable | 可堆叠 | 如果为true,那么这个物品在库存中,可以堆叠起来。 这意味着玩家可以拥有很多个这个物品,但是只占用一个物品位。这个物品真实的数量,会显示在物品位的右上角(例如,5个苹果,会放在一个物品位里,然后物品位的右上角会显示为“x5”) |