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

如何实现玩家进入ProximityPrompt范围时高亮部件及取消高亮?

ProximityPrompt触发部件高亮及取消的实现方法

你的原脚本存在两个核心问题:

  1. 脚本只会在加载时执行一次判断,无法响应后续玩家进入/离开触发范围的状态变化
  2. 每次触发都会创建新的Highlight实例,会导致部件上堆积大量无用对象,浪费资源

下面提供两种实用的实现方案,适合新手理解和使用:

方案一:动态创建/销毁高亮

这种方法会在玩家进入范围时创建Highlight,离开时销毁,适合不频繁触发的场景:

local proximityPrompt = script.Parent
local part = script.Parent.Parent
local highlight = nil -- 存高亮实例的引用

-- 玩家进入触发范围时创建高亮
proximityPrompt.PromptShown:Connect(function()
    -- 检查是否已有高亮,避免重复创建
    if not highlight then
        highlight = Instance.new("Highlight")
        highlight.Parent = part
        -- 自定义高亮样式,可根据需求修改
        highlight.FillColor = Color3.new(0, 1, 0)
        highlight.OutlineColor = Color3.new(1, 1, 0)
        highlight.FillTransparency = 0.7
    end
end)

-- 玩家离开触发范围时销毁高亮
proximityPrompt.PromptHidden:Connect(function()
    if highlight then
        highlight:Destroy()
        highlight = nil -- 清空引用,避免内存泄漏
    end
end)

方案二:预先创建高亮,通过开关控制(更高效)

如果这个部件需要频繁触发高亮,推荐预先在部件内手动创建一个Highlight,设置Enabled属性为false,再用脚本控制开关:

local proximityPrompt = script.Parent
local part = script.Parent.Parent
-- 等待预先创建的Highlight加载完成
local highlight = part:WaitForChild("Highlight")

-- 进入范围时开启高亮
proximityPrompt.PromptShown:Connect(function()
    highlight.Enabled = true
end)

-- 离开范围时关闭高亮
proximityPrompt.PromptHidden:Connect(function()
    highlight.Enabled = false
end)

关键注意点

  • 必须通过PromptShown和PromptHidden事件监听状态变化,这两个事件会在玩家进入/离开触发范围时自动触发
  • 自定义高亮样式:可以调整FillColor(填充色)、OutlineColor(边框色)、FillTransparency(填充透明度)等属性,实现不同的视觉效果
  • 避免重复创建对象:不管用哪种方案,都要确保同一时间只有一个生效的Highlight

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:55:01