如何从java中的lua脚本获取局部变量

mzmfm0qo  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(628)

我有一个lua脚本:

local set = {}
set.name = "DebugMenu"
set.setName = "DebugMenu"
set.descriptionFilenameOverride = ""
set.logicalName = "<DebugMenu>"

在java中,我有:

LuaValue script = globals.load(..input stream.., "main", "t", globals);

如何在lua脚本中访问表中的值?

uelo1irk

uelo1irk1#

你可以给它改名 local_set 取而代之的是,这样就不会和半打左右的其他人混淆了 set 函数(sethook,setmetatable…),位于。那就放下它 local ,因此可以从全局范围访问内容。
https://pgl.yoyo.org/luai/i/debug.getlocal 可能性是存在的,但它是不可靠的。https://www.lua.org/pil/23.1.1.html 你必须在按键间滚动直到找到它。

local stack_level = 1
local stack_index = 1

while true do
    local name, value = debug.getlocal( stack_level, stack_index )
    print()
    if not name then break end

    if type( value ) == 'table' then
        for k, v in pairs( value ) do
            print( k, v, type(v) )
        end
    else  --  could be recursive, if you need to dig deeper
        print( name, value, type(value) )
    end

    stack_index = stack_index +1
end

编辑:
重命名它似乎更容易,因此可以从全局中安全地访问它。

local_set = {}

local_set .name = 'DebugMenu'
local_set .setName = 'DebugMenu'
local_set .descriptionFilenameOverride = ''
local_set .logicalName = '<DebugMenu>'

相关问题