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

LocalScript触发的GUI对所有玩家可见,如何修复为仅本地玩家可见

问题原因
  • 你当前的代码仅校验了碰撞对象名称为Right Leg,没有校验该碰撞体所属的角色是否为当前本地玩家控制的角色。只要任意玩家触碰该部件,所有客户端运行的同名LocalScript都会触发对应GUI显示逻辑,因此所有玩家都会看到GUI。
修复方案

修复后代码如下:

local Players = game:GetService("Players")
local prnt = script.Parent
-- 获取当前本地玩家
local localPlayer = Players.LocalPlayer
-- 防重复触发防抖标记
local debounce = false

game.Workspace.TeamChoose.Silents.Touched:Connect(function(hit)
    -- 同时校验防抖状态、碰撞体名称、碰撞体所属角色是否为本地玩家角色
    if not debounce and hit.Name == "Right Leg" and hit.Parent == localPlayer.Character then
        debounce = true
        prnt.Visible = true
        prnt.Silents.Visible = true
        prnt.Phantoms.Visible = false
        -- 1秒后重置防抖,可根据实际需求调整时长
        task.wait(1)
        debounce = false
    end
end)
改动说明
  • 新增本地玩家获取逻辑,碰撞触发时额外校验碰撞体所属角色是否为本地玩家控制的角色,确保只有触发碰撞的本地玩家才会执行GUI显示逻辑
  • 新增防抖逻辑,避免单次触碰多次触发事件导致的异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:57:02