这是Y3编辑器的Lua开发框架,旨在帮助 纯Lua开发者 更好的开发地图。 本项目希望可以和广大用户共同开发此框架,因此希望大家可以积极提出建议,包括框架设计也可以提出自己的想法一起讨论。
- 使用Y3编辑器创建一张地图,
- 在VSCode中安装扩展
sumneko.y3-helper - 在左侧边栏选择“Y3开发助手”,点击“初始化Y3库”
- 使用Y3编辑器创建一张地图,并打开地图目录(默认为
<地图工程>/maps/EntryMap) - 然后将地图内的
script/y3目录替换为此工程 - 你可以双击运行一下
script/y3/初始化配置.bat,他可以帮你配置插件环境与调试器 - 使用VSCode打开
script文件夹
注意:如果你是用的编辑器是1.0版本,请将此项目的分支切换到
1.0
从演示图开始学习Lua!
包含:
- 主控面板(头像、属性、技能、血条)
- 按住空格或点击头像将镜头聚焦在此单位身上
启用方法:
- 在Lua代码中加入
require "y3.演示.demo.界面" - 在编辑器中点击
菜单栏->插件->插件商城,搜索LuaLib,安装LuaLib示例-界面(美术资源)
包含:
- 简单的5波怪物进攻
- 英雄死亡或场上的怪物超过30个后失败
- 消灭所有怪物后胜利
启用方法:
- 在Lua代码中加入
require "y3.演示.demo.防守图" - 在编辑器中点击
菜单栏->插件->插件商城,搜索LuaLib,安装LuaLib示例-防守图(英雄、技能、怪物的物编数据)
绝大部分的接口会保持兼容,但是对于纯Lua作者来说,很多功能有更好的实现方式。比如ECA中的动作“将整数加一”在“ECA转Lua”时会生成函数调用,但在此框架中该函数被移除了。 而触发器、事件等功能也会和ECA中的有较大差异,利用Lua的语言特性使用了更加方便Lua开发的形式。
尽量不要直接调用。因为目前已经有计划修改CAPI,直接调用CAPI可能会在未来产生兼容性问题。
ECA可以直接执行Lua代码,你也可以参考此代码注册一个绑定函数供ECA调用。
我们的模型资源是动态下载的,您需要显式申明你使用的模型。申明方式是在表格编辑器中新建一个表格,然后在里面填入你使用的模型或特效资源ID即可。这张表格无需在游戏中实际使用。
- VSCode在扩展市场中搜索安装插件
actboy168.lua-debug。 - 将
script/y3/演示/项目配置/launch.json复制到script/.vscode/launch.json。 - 启动游戏后,点击
F5开始调试。
通常调试器附加成功时已经错过了游戏初始化时机,如果你想要追踪初始化相关的代码,可以在相关代码前面加一行
LDBG:event 'wait'。当游戏执行到此行代码时,游戏会“卡主”,直到调试器附加完成才会继续往下执行。
Y3的Lua虚拟机进行过修改与定制,详细请参阅这篇文档。
- 无法追踪一些内部函数的执行。
📦 y3/
├── 📁 演示/
├── 📁 game/
│ ├── 📜 const.lua
│ ├── 📜 game.lua
│ ├── 📜 helper.lua
│ ├── 📜 py_converter.lua
│ ├── 📜 py_event_subscribe.lua
├── 📂 meta/
├── 📂 object/
│ ├── 📁 editable_object/
│ ├── 📁 runtime_object/
│ ├── 📁 scene_object/
├── 📂 tools/
├── 📂 tools/
├── 📜 debugger.lua
└── 📜 init.lua
见 开发计划