LÖVE 游戏核心骨架
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/love2d-core-sh-6ka6p9。
技能介绍
问题从哪里开始
新上手 LÖVE 项目时,常见是 main.lua 已经能调 love.*,conf.lua 也存在,但核心循环、移动速度和输入行为仍然不稳定。典型症状包括:物体速度随帧率变化、按键事件在释放或系统重复时不符合预期、多个界面之间的切换散落着一堆布尔标志,屏幕状态越改越乱。另一个版本问题是 LÖVE 11.x 的颜色通道已经从 0–255 改为 0–1,旧式 setColor 参数会让画面发白或不可见。
技能如何组织核心代码
该技能把注意力限定在 LÖVE 11.5 的基础层,而不是引擎所有能力。先确认 main.lua 中存在 love.load()、love.update(dt) 和 love.draw() 三个入口,并确认窗口和版本配置写在 conf.lua,因为 LÖVE 会在加载模块前先运行它。随后把 t.version = "11.5" 写入配置,让版本不一致时能收到警告。
移动部分统一由 dt 驱动:位置、计时器和动画进度都需要按秒缩放,不能假设每一帧耗时相同。输入部分区分两种模型:按住按键用轮询,例如在 love.update 里检查 love.keyboard.isDown;离散按键用事件回调,例如 love.keypressed 处理单次按下。屏幕切换则使用较小的状态栈管理 menu、game、pause,而不是继续堆叠 if 标志;完整 push/pop 管理器在 references/state-stack.md。
适用边界与容易踩的坑
不要把它用于纯 Lua 语言问题、Box2D 物理体/关节或 GLSL shader 代码,这些属于独立主题;跨引擎存档模式应另用 save-systems。运行验证时用项目目录执行 love .,先确认窗口、移动速度和输入在屏幕上确实正确。
常见错误包括:忘记乘 dt 导致速度随 FPS 变化;把 love.conf 写进 main.lua 而被静默忽略;在 11.x 中使用 0–255 颜色值导致白色或不可见;setColor 是全局状态,未重置会影响后续绘制;以及误把 love.keypressed 当作释放事件——释放应使用 love.keyreleased,系统按键重复则通过 isrepeat 判断。
使用场景
- 刚建好 LÖVE 项目,需要确认 `main.lua` 与 `conf.lua` 的入口函数是否完整
- 物体移动速度随帧率波动,需要用 `dt` 改写位置和计时逻辑
- 菜单、游戏和暂停界面互相切换,想用状态栈替换散落的布尔标志
适合人员
- 刚接触 LÖVE 的 Lua 开发者,希望明确三个回调函数的分工
- 维护旧项目的工程师,需要排查颜色 0–255 导致的显示异常
- 正在搭建课程小游戏原型的教学工程师,想先把基础循环跑通