libGDX快速集成lua脚本

15 1月
预计阅读时间: 1 分钟

Lua确实是一个非常常用的脚本,很多时候处于快速更新应用或者游戏AI自身所需,我们必须在游戏中集成脚本支持。而Lua是一个不错的选择。

Lua语言规范精简、运行时库小,非常容易创建受控环境,安全性也不错。虽然是一个小巧的脚本语言,但是支持协程,能够在关键时刻发挥很大作用。

要在libGDX中集成Lua非常简单,只需要选择一款java实现的Lua运行环境即可。本文以luaj为例。

首先在build.gradle中添加依赖

然后在选择需要调用的地方,这里来个简单的例子,我们需要在stage初始化时添加一个Image对象,而Image对象的资源来自TextureAtlas类,为了演示的完整性,我们还会把Lua脚本执行结果赋值给Java上下文。

这是原有的Java代码

新创建一个Lua脚本

这里我们return man是为了演示Lua脚本和Java宿主的交互,并没有太多实际的意义。

然后返回Java代码,一般我们会在一些常见的地方添加脚本调用点,但是对应的调用可以为空,一般我会选择Stage初始化的时候,Stage update的时候。然后会传入一些常见的Java对象给予Lua脚本,常见的包括stage和assetManager。

这里需要注意的是CoerceJavaToLua和CoerceLuaToJava两个类,它们分别提供了Java对象转Lua对象和Lua对象转Java对象的功能。因为Lua默认支持的类型非常少,所以大部分时候LuaValue.of是不够用的。这两个类其实使用了userdatas作为传递对象,直接将Java的对象放入userdatas中,并保持class的信息。

因为coerce也支持普通Lua类型,所以可以放心使用。

另外Intellij有Lua脚本插件,所以写起来还好

5 Replies to “libGDX快速集成lua脚本

htynkn进行回复 取消回复

电子邮件地址不会被公开。