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

为何我的Roblox Lua脚本中变量s未按预期变更?

Lua脚本变量s未按预期赋值的问题修复

问题根源

你的脚本中,判断script.Parent.Owned1 == true的逻辑存在错误:如果Owned1是Roblox的BoolValue实例,直接将实例对象与布尔值true比较永远不会成立,必须读取它的.Value属性来获取实际的布尔值。这会导致s始终进入else分支,被赋值为ShopCars,看起来像是s没有按预期改变。

其他需要修正的问题

  • 最后判断own.value == true时,属性名大小写错误:Roblox中值对象的属性是大写的Value,小写value会触发错误,导致这段逻辑无法执行。
  • cost、name、own未声明为局部变量,不符合Lua编码规范,可能引发意外的作用域冲突。
  • Color3.new(0,255,0)的参数错误:Roblox中Color3的取值范围是0-1的浮点数,不是0-255,这样写会导致颜色显示异常,应改为Color3.new(0,1,0)。

修正后的完整代码

local s

-- 修正BoolValue的判断逻辑,读取Value属性
if script.Parent.Owned1.Value == true then
    s = game.ReplicatedStorage:WaitForChild("PurchasedCars")
else
    s = game.ReplicatedStorage:WaitForChild("ShopCars")
end

-- 声明局部变量,避免作用域问题
local cost = s[script.Parent.Name].Cost
local name = s[script.Parent.Name].Named
local own = s[script.Parent.Name].Owned

script.Parent.Named.Text = name.Value
script.Parent.Cost.Text = cost.Value

-- 修正Value的大小写及Color3参数
if own.Value == true then
    script.Parent.Owned.Text = "✓"
    script.Parent.Owned.TextColor3 = Color3.new(0, 1, 0)
end

排查建议

如果问题仍存在,可以在脚本开头添加错误捕获,方便定位问题:

local success, err = pcall(function()
    -- 把上述修正后的代码放在这里
end)
if not success then
    warn("脚本执行错误:" .. err)
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:27:24