如何将值从a.lua
to传递b.lua
?
让我们说a.lua
我有这个变量代码。
local value = "Hello WOrld!"
director:changeScene ("b")
我的问题是我怎么value
能从a.lua
到b.lua
?
提前致谢....
当你声明一些本地的东西时,你明确告诉 Lua 不要在脚本之间共享它。只需创建一个非局部变量:
value = "Hello World"
在 b.lua 文件中只需要 a.lua 文件并使用它,例如在 b.lua 文件中
local a_File = require "a"
print(a_File.value)
你会得到输出为
"Hello World"
将值分配给全局表 ( _G
),如下所示:
_G.value = "Hello WOrld"
在另一个脚本中,您可以执行以下操作:
value = _G.value
比把东西塞进全局表更好的是按照它的预期使用方式使用 lua 的模块系统。
假设你有两个文件,a.lua 和 b.lua。b.lua 需要来自 a.lua 的一些值。这就是你如何做到这一点:
a.lua 代码:
module("a", package.seeall)
local myVal = "My value in file a"
local SomeVal = 15
function GetSomeValue()
return myVal
end
b.lua 代码:
require "a"
print(a.GetSomeValue()) -- prints 'My value in file a'
print(a.SomeVal) -- prints 15
print(SomeVal) -- prints nil, unless you've declared it in b.lua
这比在 _G 表中填充东西要干净得多。如果您有 3 或 4 个不同的脚本,并且您尝试存储应该命名相同的值,只是在不同的上下文中,会发生什么情况?能够说:
a.Value
a.Function()
不仅更清楚你在哪里获取数据,而且比说清楚得多
_G["Value"]
并希望这实际上是您希望的价值。如果您只处理一个只有两个文件的简单案例,使用 _G 可能会更容易。但最好是学习最佳实践并尽早使用它们。如果您有多个文件协同工作,使用 _G 将是一场噩梦......
使用director API我们将一个值传输到另一个lua文件很容易。它以表或数组类型发送数据
下面的代码很有用..
从 .lua 文件
data="hellow"
director:changeScene({data},"levelroom")
来自 b.lua 文件
module(...,package.seeall)
new=function(params)
localGroup=display.newGroup()
data=params.data
print(data) --output:hellow
return localGroup
end