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

Solar 2D(Lua)定义矩形变量报错,求原因及修复方案

报错原因

你代码里的核心问题是:声明了local rect_shape但未给它初始化任何值,此时它是Lua的nil值,Lua不允许对nil值进行索引操作(比如.w、.h这种属性访问)。另外你报错信息里的rect_enemy应该是笔误,实际是rect_shape的问题。

你之前的逻辑搞反了:试图给一个不存在的对象赋值属性,再用这些属性去创建对象——但nil根本没有属性可以赋值。

修复方案

有两种简洁的修复方式,任选其一即可:

方式1:用临时表暂存参数

先创建一个普通Lua表来存储宽高、坐标参数,再用这些参数创建矩形对象:

-----------------------------------------------------------------------------------------
--
-- main.lua
--
-----------------------------------------------------------------------------------------
-- Variable definition:
local rect_params = {} -- 先初始化空表存储参数

-- Initialization
rect_params.w = 20
rect_params.h = 40
rect_params.x = (display.contentWidth/2)-(rect_params.w/2)
rect_params.y = (display.contentHeight/2)-(rect_params.h/2)

local rect_shape = display.newRect(rect_params.x, rect_params.y, rect_params.w, rect_params.h)
rect_shape:setFillColor(49/255, 49/255, 49/255) -- Solar2D的setFillColor默认用0-1范围,0-255值需除以255

print("value of rect_shape:", rect_shape, "value of w:", rect_shape.width, "value of h:", rect_shape.height, "value of x:", rect_shape.x, "value of y:", rect_shape.y)

方式2:直接计算参数(更简洁)

不需要临时表,直接计算坐标后创建矩形,Solar2D的display.newRect返回的显示对象自带width、height、x、y属性,直接访问即可:

-----------------------------------------------------------------------------------------
--
-- main.lua
--
-----------------------------------------------------------------------------------------
local rect_w = 20
local rect_h = 40
local rect_x = (display.contentWidth - rect_w) / 2
local rect_y = (display.contentHeight - rect_h) / 2

local rect_shape = display.newRect(rect_x, rect_y, rect_w, rect_h)
rect_shape:setFillColor(49/255, 49/255, 49/255)

print("value of rect_shape:", rect_shape, "value of w:", rect_shape.width, "value of h:", rect_shape.height, "value of x:", rect_shape.x, "value of y:", rect_shape.y)

额外注意点

  • Solar2D的setFillColor默认接受0到1之间的浮点值,若使用0-255的RGB值,必须除以255,否则颜色会显示成全白(255会被截断为最大值1)。
  • 你之前print里访问rect_shape.w是错误的,Solar2D显示对象的宽高属性是width和height,不是w和h。

内容的提问来源于stack exchange,提问作者Kaj van Veen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:07:07