gpt4 book ai didi

luajava - 如何在 lua 协程中调用 Java 函数?

转载 作者:行者123 更新时间:2023-12-02 05:07:06 28 4
gpt4 key购买 nike

我正在使用 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”,出乎意料的是,我得到了不同的结果。

我怎样才能让它发挥作用?提前谢谢!

最佳答案

冒号把你搞得一团糟。没有带有两个参数的 sayHello 函数。通过使用冒号,您将“ self ”(人)和字符串发送到 Java 代码。您没有采用两个参数的 java 方法。只需在 Lua 中使用点而不是冒号即可使其工作。

关于luajava - 如何在 lua 协程中调用 Java 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759622/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com