管理背包系统
信息
本教程适用于 Party Game Kit 用户。
背包系统允许玩家存储和管理游戏内物品。本教程将教你如何使用 API 管理背包,包括:
- 向玩家背包添加和移除物品
- 接收背包变更通知
前置条件
- 已安装并集成 Visual Studio Code 到 Studio。未集成请参考 如何开始编写代码。
- Studio 已启用背包功能。该 功能默认开启,所有默认设置见 背包。
- 已为场景实体添加新的 Lua 脚本。不会操作可参考 创建或添加脚本。
使用 Lua 管理背包
假设你有一个物品,物品 ID 为 1,需要在首位玩家进入游戏时给予其20个,并在5秒后移除8个。同时希望收到背包变更的详细信息。以下代码分步介绍背包管理关键流程,并提供完整代码示例。
注意:创建物品请在 资源管理器窗口点击 玩法 > 物品。物品 ID 为唯一标识且不可更改。详情见 物品。
1. 获取玩家实体
首先需获取玩家实体以管理其背包。以下为通过玩家 ID 获取实体的示例:
local playerEntity = nil
EventHelper.AddListener(YaGame, "PlayerJoinedEvent", function (playerId)
playerEntity = YaGame.Instance:GetPlayerEntity(playerId)
end)
2. 获取 YaBackpackComponent
在使用背包管理功能前,需获取 YaBackpackComponent:
local backpack = YaScene:GetComponent(script:GetComponentType("YaBackpackComponent"), playerEntity)
3. 添加和移除背包物品
使用 YaBackpackComponent 的
local function AddRemoveSample()
-- 添加物品
backpack:Add(1, 20)
-- 移除物品
backpack:Remove(0, 8)
end
4. 接收背包变更通知
为背包变更添加事件监听。背包数据变更时可获取物品详情,包括物品 ID 和增减数量。
local function BackPackChanged()
print("背包已变更")
end
local function BackPackAddItem(AddedData)
print(AddedData.ItemId)
print(AddedData.ChangeCount)
end
local function BackPackRevItem(RemovedData)
print(RemovedData.ItemId)
print(RemovedData.ChangeCount)
end
local function ListenSample()
-- 背包移除事件 --
EventHelper.AddListener(backpack, "ItemRemovedEvent", BackPackRevItem)
end
5. 保存脚本并在试玩模式下测试
完整代码示例 可直接在编辑器中使用以下脚本,保存后在试玩模式下测试。
local playerEntity=nil
local function BackPackChanged()
print("背包已变更")
end
local function BackPackAddItem(AddedData)
print(AddedData.ItemId)
print(AddedData.ChangeCount)
end
local function BackPackRevItem(RemovedData)
print(RemovedData.ItemId)
print(RemovedData.ChangeCount)
end
EventHelper.AddListener(YaGame, "PlayerJoinedEvent", function (playerId)
if playerEntity ~= nil then
EventHelper.AddListener(backpack, "ItemRemovedEvent", BackPackRevItem)
end)
注意:冒险类游戏通常会保存上一轮的背包数据,其他类型则可能不会。
你已学会如何添加、移除背包物品并接收变更通知。可据此构建更高级的背包系统。更多 API 及资源见 YaBackpackComponent。