Agent Skills
返回列表
💻

LÖVE 2D 核心助手

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/love2d-core-3ypv 到你的 AI 助手。

技能介绍

要解决的问题

刚搭起来的 LÖVE 项目,画面能出来,但一跑就露馅:方块在高刷新率屏幕上“窜”得更快,低帧率时又慢吞吞;按键偶尔失灵,松开没反应;想在菜单、游戏、暂停之间切来切去,最后 if 条件堆成一团;更隐蔽的是,把 love.conf 写进 main.lua 后窗口标题根本不生效。这些都不是 Lua 语法问题,而是 LÖVE 的入口约定、回调循环和坐标系/颜色空间没对齐。

技能如何工作

这个技能围绕 LÖVE 11.5 的核心骨架展开,流程很直接:

  1. 确认入口点:游戏跑 main.lua,应定义 love.load()(一次性初始化)、love.update(dt)(状态推进)与 love.draw()(绘制);窗口和版本配置放进 conf.lua,它在模块加载之前执行。
  2. 固定版本:在 conf.lua 里写 t.version = "11.5",版本不匹配时 LÖVE 会告警。
  3. 用 dt 驱动一切运动:所有逐帧位置、计时器、动画都要乘以 dt(秒),否则速度就和帧率绑定。
  4. 输入分两种:按住不放用轮询 love.keyboard.isDown,单次按下用 love.keypressed 回调。
  5. 屏幕状态用小状态栈管理(菜单、游戏、暂停),而不是散落的布尔标志;完整 push/pop 管理器见 references/state-stack.md。
  6. 跑起来观察:在项目目录执行 love .,亲眼确认窗口、移动速度和输入,再谈“能跑了”。

适用边界与注意点

  • 颜色在 LÖVE 11.x 是 0–1 而不是 0–255。setColor(255,0,0) 会被钳成白色;要么写 setColor(1,0,0),要么用 love.math.colorFromBytes。
  • 颜色是全局的,一次 setColor 之后所有绘制都会被染色,绘制纯文本/图片前记得 love.graphics.setColor(1,1,1) 复位。
  • love.keypressed 只在按下和系统重复时触发,松开要用 love.keyreleased,并可通过 isrepeat 忽略长按重复。
  • 不覆盖:与 LÖVE 无关的 Lua 语言问题;物理(LÖVE 通过 Box2D 的 love.physics,是另一主题);着色器(love.graphics 的 GLSL)。跨引擎存档建议看 save-systems。

使用场景

  • 新建 LÖVE 项目时,需要搭好 main.lua 的回调循环、conf.lua 窗口与版本,并确认 love.load/update/draw 入口。
  • 游戏角色移动速度随帧率漂移时,要排查未乘 dt 的逐帧位移,把位置、计时器和动画改为按秒推进。
  • 菜单、游戏、暂停界面用一堆 if 标志切换导致逻辑混乱时,需要改用小状态栈管理屏幕状态。
  • 画面颜色发白或整体偏色时,要检查 setColor 是否误用 0–255,并在绘制文字、图片前复位颜色。

适合人员

  • 刚开始用 Lua 做 LÖVE 游戏的独立开发者,需要先跑通 main.lua 回调循环和 conf.lua 配置。
  • 负责小游戏核心玩法的客户端程序员,要处理角色移动随帧率漂移和按键状态错乱。
  • 维护 LÖVE 11.x 项目的工程师,需要在升级版本或改配色时排查颜色空间与全局状态问题。
  • 把 LÖVE 原型交付给同伴试玩的学生或工作室成员,希望菜单、游戏、暂停切换逻辑清晰可玩。