为何我的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
相关产品推荐
相关产品推荐

