Lua 问题:返回想要的数据
想求助一下这个问题:
function setupRound()
local gameModes = {'模式 1','模式 2','模式 3'} -- 游戏模式
local maps = {'地图 1','地图 2','地图 3'}
--local newMap = maps[math.random(1,#maps)]
local mapData = {maps[math.random(#maps)],gameModes[math.random(#gameModes)]}
local mapData = mapData
return mapData
end
a = setupRound()
print(a[1],a[2]) --Egor 给出的修复方法
问题是:`
在尝试从 setupRound() 中获取信息时,我得到了
table: 0x18b7b20。
获取 mapData 的方法:
a = setupRound()
print(a)
编辑:
输出问题
使用当前脚本,我将永远得到以下输出:地图 3 模式 2。这是什么原因?
效率;这是最佳方法吗?
虽然这不是一个问题,但我想知道我正在使用的方法是否确实是这样做的最有效方法。
你创建了一个单独的函数来生成你的游戏模式和地图,这非常好。这样分离代码,模块化,整洁。
现在,你的游戏模式在一个名为modes = {}的表中(基本上是一个字符串列表)。你的地图在另一个表maps = {}中。
每个表项都有一个key,当省略时,它变为向上计数的数字。在你的例子中,modes和maps中各有3个项目,因此键会是1、2、3。键用于在该表(=列表)中抓取特定项目。例如,maps[2]将抓取maps表中的第二个项目,其值为map 2。modes表也适用于此。因此你要问的输出就是这样。
要获得随机游戏模式,只需调用math.random(#mode)。math.random最多可以接受两个参数。通过这些,您可以定义要从中选择随机数的范围。您也可以传递单个参数,然后Lua假定您想从1开始。因此,math.random(3)实际上变成了math.random(1, 3)。在这种情况下,#mode表示“计算该表中的所有游戏模式并给我该计数”,即3。
要从该函数返回您选择的地图和游戏模式,我们可以使用另一个表,只是将两个值保持在其中。但是,这一次表将具有不同的键来访问其中的值;即“map”和“mode”。
完整的例子是:
local function setupRound()
local modes = {"mode 1", "mode 2", "mode 3"} --不同的游戏模式
local maps = {"map 1", "map 2", "map 3"} --不同的地图
return {map = maps[math.random(#maps)], mode = modes[math.random(#modes)]}
end
for i = 1, 10 do
local freshRound = setupRound()
print(freshRound.map, freshRound.mode)
end
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

首先
这行没有什么用,可以删除(它确实有作用,只是不是你想要的作用)
local mapData = mapData输出问题
问题出在
math.random上。编写一个脚本,内容为print(math.random(1,100))并运行它 100 次。它每次都会输出相同的数字。这是因为 Lua 在启动时默认不设置随机种子。最简单的方法是在程序开头调用math.randomseed(os.time())。效率;这是最好的方法吗?
这取决于情况。对于你想要的目的来说,是的,它已经足够高效了。如果有什么要改进的地方,我会将其改为以下形式,以避免使用神奇数字,这将使未来更难理解代码。
--- 等等。 local mapData = { map = maps[math.random(#maps)], mode = gameModes[math.random(#gameModes)] } -- 等等。 print(a.map, a.mode)还要记住: