You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

制作Roblox背包装备系统时数字键触发代码次数异常(2000+次)

Roblox背包系统按键触发多次问题解决

你的代码里按键触发数千次的核心原因是:while wait() do循环里反复调用uis.InputBegan:Connect(),每循环一次就给InputBegan事件绑定一个新的处理函数。当你按下按键时,所有已绑定的函数都会执行,次数随循环次数累积,最终导致触发上千次。

修正步骤:

  • 移除无限循环,将InputBegan事件绑定放在循环外,只执行一次
  • 利用processed参数过滤掉聊天框等输入场景,避免误触发

修正后的代码:

local player = game.Players.LocalPlayer
local uis = game:GetService("UserInputService")
local inventoryFolder = Instance.new("Folder")
inventoryFolder.Name = "InventoryFolder"
inventoryFolder.Parent = player
local hotbar = script.Parent.Hotbar

-- 初始化背包物品到背包文件夹并同步快捷栏
for i, v in pairs(player.Backpack:GetChildren()) do
    v.Parent = inventoryFolder
    local slot = hotbar[i]
    if slot and slot.SlotItem.Value == nil then
        slot.SlotItem.Value = v
        local itemAsset = game.ReplicatedStorage:FindFirstChild(tostring(slot.SlotItem.Value))
        if itemAsset then
            slot.Image = itemAsset.Texture
        end
    end
end

-- 只绑定一次按键事件
uis.InputBegan:Connect(function(key, processed)
    -- 忽略已被处理的输入(比如聊天框输入)
    if processed then return end
    
    if key.KeyCode == Enum.KeyCode.One then
        print("按下数字1,执行装备逻辑")
        -- 这里添加你的装备功能代码
    end
end)

额外优化建议:

  • 给快捷栏绑定加slot存在判断,避免索引越界报错
  • 通过FindFirstChild获取物品资源,防止物品不存在时崩溃
  • 如果后续需要动态同步背包物品到快捷栏,可以监听inventoryFolder的ChildAdded事件

内容的提问来源于stack exchange,提问作者TrulyBlue2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:02:09