在 LUA (LÖVE 引擎) 中,如何使用变量来给一个表命名?
2020-6-20 9:12:55
收藏:0
阅读:161
评论:2
基本上:
- 我正在使用 LÖVE 引擎制作一个点击创建块的游戏
- 每次点击时,一个块会在鼠标 X 和鼠标 Y 处生成
- 但我只能让一个块出现,因为我必须将那个块(或表)命名为“object1”
有没有办法创建一张张带有递增值的表格? (比如 object1 {},object2 {},object3 {}等等...但在主表中“created_objects”)
但只有在单击时才能创建,这可能排除了循环部分(但如果不排除,请告诉我)
这是我的代码,但它不能编译。
function object_create(x, y, id) **--Agruments telling the function where the box should spawn and what the ID of the box is (variable 'obj_count' which increases every time a box is spawned)**
currobj = "obj" .. id **--Gives my currently created object a name**
crob.[currobj] = {} **--Is supposed to create a table for the current object, which holds all of its properties. **
crob.[currobj].body = love.physics.newBody(world, x, y, "dynamic")
crob.[currobj].shape = love.physics.newRectangleShape(30, 30)
crob.[currobj].fixture = love.physics.newFixture(crob.[currobj].body, crob.[currobj].shape, 1) **--The properties**
crob.[currobj].fixture:setRestitution(0.3)
但我应该用什么替换 [currobj]?
已解决
找到了我要找的。 如果人们想知道代码,这里是代码:
function block_create(x, y, id) --(鼠标x和y,以及增加的变量)
blocks[id] = {}
blocks[id][1] = love.physics.newBody(world, x, y, "dynamic")
blocks[id][2] = love.physics.newRectangleShape(45, 45)
blocks[id][3] = love.physics.newFixture(blocks[id][1], blocks[id][2])
blocks[id][3]:setRestitution(0.2)
blocks[id][4] = math.random(0, 255) --The Color
blocks[id][5] = math.random(0, 255)
blocks[id][6] = math.random(0, 255)
blockcount = blockcount + 1
点赞
用户1190388
如果你想要这些表格是全局的,那么你可以这样做:
sNameOfTable = "NAME"
_G[sNameOfTable] = {1,2}
然后你将会拥有一个名为 NAME 的表格变量,就像这样所显示的输出(Codepad)。
否则,如果你想要它是其他表格的子表,你可以这样做:
tTbl = {}
for i = 1, 20 do
local sName = string.format( "NAME%02d", i )
tTbl[sName] = {1,2}
end
for i, v in pairs(tTbl) do
print( i, v )
end
不需要担心输出(Codepad)的排序。Lua 表格在使用时无需排序。
2013-01-20 15:29:19
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我可能会像这样做。
local blocks = {} -- 与你的 `crob` 表相等 function create_block(x, y) local block = funcToCreateBlock() -- 创建块的任何代码 table.insert(blocks, block) return block end如果你想获取刚刚使用共享函数创建的块的引用,只需捕捉它。
- 给你新的块,自动将其添加到已创建块的列表中 local new_block = create_block(0, 10)这会将块对象放入您的
block表中,并自动为每个块在表中分配一个数值索引。因此,如果您为3个不同的鼠标单击调用create_block()三次,则blocks表的外观如下:您可以通过执行以下操作从
blocks表中获取第二个块对象:local block2 = blocks[2]或者,您可以使用
pairs或ipairs循环遍历表中的所有块。for idx, block in pairs(blocks) do -- 对每个块做些什么 end如果这并没有完全回答您的问题,我很抱歉。但是,根据您的写作,似乎没有真正的理由需要在
crob表中为块命名任何特定的名称。