如何将a.lua
的值传递给b.lua
?
让我们说在a.lua
我有这个变量代码。
local value = "Hello WOrld!"
director:changeScene ("b")
我的问题是如何将value
从a.lua
传递到b.lua
?
提前感谢....
答案 0 :(得分:9)
当你声明一些本地的东西时,你明确告诉Lua不要在脚本之间共享它。只需创建一个非局部变量:
value = "Hello World"
在b.lua文件中只需要a.lua文件并使用它,例如在b.lua文件中
local a_File = require "a"
print(a_File.value)
您将获得输出
"Hello World"
答案 1 :(得分:5)
将值分配给全局表(_G
),如下所示:
_G.value = "Hello WOrld"
在另一个脚本中,您可以执行此操作:
value = _G.value
答案 2 :(得分:2)
比仅仅填充全局表更好的方法是按照预期的方式使用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将是一场噩梦......
答案 3 :(得分:1)
使用director API我们将一个值转移到另一个lua文件很容易。它以表或数组类型发送数据
下面的代码很有用..
来自a.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