LuHaxe是我的一个脑洞概念实现,它的目标是让程序员通过编写Haxe(与ActionScript、TypeScript极其相似的体验和手感),完成Unity3D环境中lua脚本的开发工作。胶水中的胶水,不会lua也能写一手好lua的胶水。
- 底层采用某大神的tolua,成熟稳定,重复造车轮子不是脑洞的目的。因此本框架具有tolua的全部特点。
- 采用Haxe语言进行脚本编写,并“翻译”成lua执行,代替在tolua环境下进行lua脚本编写的传统开发模式。
- Haxe是强类型的面向对象语言,具有完整的面向对象特性,包括但不限于继承、接口、抽象、g/setter、lambda、泛型模板等,详见Wiki。更贴合Java、C#等程序员的书写和设计习惯。
- 支持HaxeDevelop(FlashDevelop)、VS Code等代码编辑工具,具有完善的代码提示、代码自动完成、Refactor、类型检测、编译时错误检测等。解决了当下lua开发中比较大的痛点,方便多人同步进行规模化开发。
- 可通过trace输出日志的方式调试Haxe文件,亦可以通过tolua的调试机制调试生成的lua文件。
- AS、TS、JS程序员可三分钟内上手。
- 有成品的Haxe库和底层库不依赖tolua,如:PureMVC(MVC框架)、Enitias(ECS框架)、Protobuf(序列化)、Bson(序列化)、TCP/UDP Socket等。移植其他语言类库也比较容易。
- Haxe可输出成多种主流语言,因此前后端通用的战斗逻辑可统一用Haxe进行编写,然后输出成服务器相对应的语言即可。
- 下载Haxe https://haxe.org/download/
- 下载IDE 推荐HaxeDevelop,用本框架可以免配置,其他编辑器需要手动配置
- 打开HaxeDevelop并打开项目Haxe/Example,修改hx文件后,执行菜单中的Build Project。
- 打开Unity并打开项目Unity/Example,然后打开场景Unity/Example/Assets/Example,运行查看效果。
Haxe调用tolua需要进行API映射,本框架映射API非常简单:
- tolua中的内容 (Vector3.lua)
function Vector3.New(x, y, z)
local t = {x = x or 0, y = y or 0, z = z or 0}
setmetatable(t, Vector3)
return t
end
- Haxe映射文件 (Vector3.hx)
package;
extern class Vector3
{
var x:Float;
var y:Float;
var z:Float;
static function New(x:Float, y:Float, z:Float):Vector3;
}
- 注意:由于haxe的翻译规则,通过“冒号”进行方法调用lua指令,需要将lua当成“点”的模式进行处理,参考UpdateBeat.hx。
当前搭建好了脚手架,进行了可行性验证,但是还有大量API未映射,希望得到各位大神的帮助。
QQ群:709673804 验证码:撸Haxe