桌面宠物是常见的桌面陪伴类应用,用户希望角色能常驻桌面、跟随操作做出反应,同时不能挡住正常工作。Windows 下透明置顶窗口存在点击穿透不稳定、透明层丢绘、休眠唤醒后窗口消失等问题。本项目基于 Electron 实现一个 Live2D 角色桌宠,针对这些 Windows 平台问题做了专门处理,可作为个人陪伴工具,也可作为 Live2D 角色/IP 在桌面端展示的载体。
点击空白处退出提示
语言技术
JavaScript、Node.js、electron系统类型
Windows行业分类
游戏
桌面宠物是常见的桌面陪伴类应用,用户希望角色能常驻桌面、跟随操作做出反应,同时不能挡住正常工作。Windows 下透明置顶窗口存在点击穿透不稳定、透明层丢绘、休眠唤醒后窗口消失等问题。本项目基于 Electron 实现一个 Live2D 角色桌宠,针对这些 Windows 平台问题做了专门处理,可作为个人陪伴工具,也可作为 Live2D 角色/IP 在桌面端展示的载体。
- Live2D 角色常驻桌面:透明无边框窗口,置顶显示,按模型包围盒自动缩放并右下对齐。
- 点击穿透(默认开启):开启时整窗鼠标穿透到下层,并在光标周围约 70px 做径向透视,看清下方桌面;关闭后可正常点击和拖动角色。
- 键鼠互动:检测全局键盘按下、回车、鼠标左右键,触发角色对应动作(按键、回车、左/右)。
- 视线跟随:角色随屏幕光标位置转动。
- 系统托盘:显示/隐藏、点击穿透开关、开机自启、退出;记忆窗口位置。
- 打包发布:支持 NSIS 安装版与便携版。
主进程使用 Electron 创建 transparent + alwaysOnTop(screen-saver 级别)的无边框窗口,通过 setIgnoreMouseEvents(forward) 实现穿透;主进程轮询光标位置并结合渲染进程上报的角色命中框判断交互区域,解决透明像素收不到 DOM 事件的问题。全局键鼠状态通过 koffi 调用 user32.dll 的 GetAsyncKeyState 轮询获取(仅检测按下事件),经 IPC 发送给渲染进程触发动作。渲染层使用 PixiJS + pixi-live2d-display + Cubism Core 加载 .lpk 模型,requestAnimationFrame 驱动径向透视遮罩。稳定性方面实现了可见性看门狗、休眠唤醒/解锁/分辨率变化后自动恢复、渲染进程崩溃后重建窗口、单实例锁。设置以 JSON 持久化。使用 electron-builder 打包,GitHub Actions 做 CI 冒烟构建,推送 v* 标签自动发布 Release(含 SHA256SUMS)。





评论