Lua确实是一个非常常用的脚本,很多时候处于快速更新应用或者游戏AI自身所需,我们必须在游戏中集成脚本支持。而Lua是一个不错的选择。
Lua语言规范精简、运行时库小,非常容易创建受控环境,安全性也不错。虽然是一个小巧的脚本语言,但是支持协程,能够在关键时刻发挥很大作用。
要在libGDX中集成Lua非常简单,只需要选择一款java实现的Lua运行环境即可。本文以luaj为例。
首先在build.gradle中添加依赖
compile "org.luaj:luaj-jse:3.0.1"
然后在选择需要调用的地方,这里来个简单的例子,我们需要在stage初始化时添加一个Image对象,而Image对象的资源来自TextureAtlas类,为了演示的完整性,我们还会把Lua脚本执行结果赋值给Java上下文。
这是原有的Java代码
atlas = DartsGame.getManager().get("pack/sha/default.pack", TextureAtlas.class); // 获取图册
man = new Image(atlas.findRegion(PLAYER)); // 获取图册中的Player.png并创建image对象
man.setName("player");
man.setX(0);
man.setY(160 - man.getHeight() / 2); // 设置Y值,以让图片在中间显示
stage.addActor(man); // 将主角添加到舞台
新创建一个Lua脚本
function man(stage, atlas)
man = luajava.newInstance("com.badlogic.gdx.scenes.scene2d.ui.Image", atlas:findRegion("Player"))
…







