我正在通过 luajava 开发游戏。当我在 lua 协程中调用 java 函数时,我收到错误“无效的方法调用。没有这样的方法。” 这是代码
package com.soyomaker;
import org.keplerproject.luajava.LuaException;
import org.keplerproject.luajava.LuaState;
import org.keplerproject.luajava.LuaStateFactory;
public class Main {
public static void main(String[] args) {
LuaState luaState = LuaStateFactory.newLuaState();
luaState.openLibs();
try {
luaState.pushObjectValue(new People());
luaState.setGlobal("people");
} catch (LuaException e) {
e.printStackTrace();
}
luaState.LdoFile("res/script.lua");
}
}
//=============================================================================
package com.soyomaker;
public class People {
public void sayHello(String name) {
System.out.println("hello " + name);
}
}
//=============================================================================
print(people)
print(people.sayHello)
people:sayHello("Bill")
function run()
print("========run========")
print(people)
print(people.sayHello)
people:sayHello("Jobs")
end
local co=coroutine.create(run)
print(coroutine.resume(co))
结果如下:
hello Bill
userdata: 040256B8
<b>function: 040252C0</b>
========run========
userdata: 040256B8
<b>function: 04026650</b>
false Invalid method call. No such method.
我打印了两次“people.sayHello”,出乎意料的是,我得到了不同的结果。
我怎样才能让它工作?谢谢提前!