尝试调用全局变量时导入类型

我正在使用最新的lua接口,并尝试运行以下代码:

luanet.load_assembly("Phoenix")
luanet.load_assembly("Phoenix.Structures")
NpcDialog = luanet.import_type("Phoenix.Structures.NpcDialog")

function npc(request, client)
    local dialog = new NpcDialog(client)
    dialog.Text("hi this is a test")
    dialog.Send()
end

但是出现了以下错误: LuaInterface.LuaException: [string "chunk"]:6: attempt to call global 'NpcDialog ' (a nil value)

可执行文件名为 Map Server.exe

程序集名称为 Map Server 默认命名空间为 Phoenix

这是因为文件的程序集与程序集名称不同,我不知道为什么!!

是否有办法在不更改程序集名称的情况下使其正常工作?

点赞
用户107090
用户107090

第6行是有效的 Lua 代码,但并不会做你想要的事情。Lua 解析它时好像在 new 后面有一个;,因此尝试调用 NpcDialog

2014-04-04 14:13:13
用户869951
用户869951

Lua 中没有 new 运算符。编写代码:

function npc(request, client)
    local dialog = NpcDialog(client)

如果在此修复后仍然遇到相同的问题,则 NpcDialog 为 nil:可能导入的返回值为 nil,或者在导入代码和调用 npc(r,c) 代码之间将其置为 nil。可以尝试以下方法:

assert(NpcDialog)

如果这仍然失败,表示 load_assembly("Phoenix") 失败了,可能是因为该程序集的名称不是“Phoenix”,而是“Map Server”,因此请尝试以下代码:

luanet.load_assembly("Map Server")
NpcDialog = luanet.import_type("Phoenix.Structures.NpcDialog")
assert(NpcDialog)
2014-04-04 23:21:02