figo Portal F 标记

Figma 设计稿直接
变成可运行的 UI

figo 是一个 C++ 矢量 UI 库:.fig 文件(以及 React/HTML 页面)不再是"参考图", 而是 UI 本身。矢量渲染、响应式布局、脚本逻辑、一键多端打包, 任何游戏引擎几十行代码接入。
核心库 MIT 开源;把设计导成引擎原生资产的转换插件按引擎商业发布——figo2unity 已上线,Cocos / Godot 版本即将推出。

设计 .fig + 逻辑 .js = 一个 App
Why figo

解决什么问题

设计稿和真正跑在产品里的 UI,一直是两个世界:设计师在 Figma 里画完, 工程师在引擎里"照着重画"一遍。figo 把这两个世界合成一个。

传统流程:设计稿只是参考图

  • 工程师在引擎编辑器里手工重建每一个界面
  • 间距、圆角、渐变、字体在还原中一点点走样
  • 设计改一版,代码跟着返工一轮,迭代以周计
  • UI 逻辑和引擎强绑定,换引擎全部重来
  • 位图九宫格缩放糊,多分辨率各出一套图

figo:设计即运行时

  • .fig 文件直接加载运行——布局、渐变、阴影、auto-layout 原样生效
  • 矢量光栅化(ThorVG)——任意分辨率、任意缩放都清晰
  • 改设计 = 换文件——不重编译,设计师产出即最终产物
  • 引擎解耦——能上传 RGBA 纹理、转发鼠标事件的引擎都能接,参考后端约 200 行
  • 逻辑写 JS(QuickJS)——数据绑定、导航转场、手势滚动,不碰 C++ 也能做完一个 app
How it works

工作原理

所有输入归一到同一个中间表示 canvas.json,由核心库渲染或导出—— 一条管线,进口是设计,出口是运行中的界面。

.fig 本地文件fig2json(进程内)
Figma REST JSON?geometry=paths
React / HTML 页面web2canvas(真实浏览器采集)
canvas.json统一中间表示
figo::Document布局 · 命中检测 · 脚本
ThorVG 矢量光栅化CPU / GPU 零拷贝
引擎纹理上屏raylib · Unity · Unreal · 自研
Godot 4 工程figo2godot(.tscn + prefabs)
Cocos / Unity 预制体figo2cocos · figo2unity

运行时路径:节点树 → ThorVG 场景图 → SwCanvas → RGBA8888 像素缓冲(直通 alpha)→ 引擎后端上传为纹理绘制;滚动 / 转场不重建场景,脏区重绘。 UI 半透明区域可透出下层游戏画面。

🧩

Figma 特性高保真

组件实例与变体切换、约束 + auto-layout 响应式重排、渐变 / 阴影 / 模糊、 多语言富文本与字形级字体回退、clipsContent 裁剪。

为交互而生的运行时

点击 / 长按 / 滑动 / 惯性滚动 / 吸附选择器、页面导航转场、可编辑文本、 slider 绑定、design token 一键换肤(light / dark)。

📜

QuickJS 脚本层

ui.bindList 数据绑定、ui.navigateTo 转场、 fetch() / localStorage / 定时器齐全,改 .js 热重载。

🖥️

figoedit 可视化编辑器

Figma 式操作的本地编辑器,内嵌 MCP 服务器——AI 可以直接读改图层、 截图自检,和你共享同一条撤销历史。

📦

一键多端打包

figmapack 把一个 app 工程打成 Windows 可执行、 Web(wasm)、Android APK——三端共用同一份设计和逻辑。

🤖

AI 原生工作流

以 Claude Code 插件交付:脚手架 → AI 在编辑器里设计 → 写逻辑 → 截图自验 → 审美评审,整条闭环打包成技能。

Getting started

怎么使用

最快的路径是 Claude Code 插件——完整闭环已经打包成技能; 也可以直接用命令行工具手动走每一步。

1

安装 Claude Code 插件

装好后先跑一次 figo:setup 安装 / 验证工具链 (Windows 下载预编译二进制,macOS / Linux 源码构建)。

/plugin marketplace add nowasm/figo
/plugin install figo@figo
2

做一个 app:设计 + 逻辑

对 Claude 说"做一个天气 app"即可触发 figo:new-app: 从能跑的模板起步,AI 通过 figoedit 的 MCP 直接搭建界面(你随时 Ctrl+Z), 再写 app.js 逻辑。手动路径:

# 从模板生成工程(tab-shell / list-detail / form)
python tools/figmanew.py myapp --template list-detail
# 打开可视化编辑器改设计(AI 经 MCP 同步操作)
figoedit myapp/design.json
3

写逻辑,跑起来

逻辑就是普通 JavaScript,完整 API 见 include/figo/script.h。 figoplay 运行中改 .js 热重载。

// app.js
ui.setResizeMode("reflow");
ui.bindList("portfolio-list", coins.length, (item, i) => {
  item.find("Heading").child(0).text = coins[i].symbol;
});
ui.onClick("Card", (node) => {
  ui.navigateTo("Coin Info", "slideLeft", 0.28);
});
figoplay myapp                          # 运行
figoplay myapp --shot out.png           # 截图自验(AI 的眼睛)
4

打包或导出到引擎

作为独立 app 一键三端打包;或者导成引擎工程,把 UI 融进现有游戏。

python tools/figmapack.py myapp -t all  # Windows / Web(wasm) / Android APK
figo2godot design.fig out --prefabs     # Godot 4 工程(.tscn + 组件预制体)
figo2unity design.fig out               # Unity UGUI 预制体
figo2cocos design.fig out               # Cocos Creator 3.x 预制体
5

或者:嵌进你自己的引擎

核心库与引擎完全解耦,raylib 参考后端约 200 行。C++ 侧全部 API:

auto ui = figo::FigmaUI::fromFile("menu.fig");
ui->onClick("btn-start", [&](figo::Node&, float, float) { startGame(); });

figo::RaylibFigmaView view(*ui);
while (!WindowShouldClose()) {
  view.update();      // 输入 + 脏区重绘 + 纹理上传
  BeginDrawing();
  drawGameWorld();    // UI 半透明区域透出游戏画面
  view.draw();
  EndDrawing();
}
Demo video

80 秒看懂使用过程

从一句话需求到跑起来的 app:设计 → 逻辑 → 自验 → 多端交付。

Open core · Paid plugins

开源核心 + 商业转换插件

figo 的产品关系很简单:核心库负责渲染与运行,开源免费转换插件负责把设计导成引擎原生资产,按引擎单独商业发布。 插件与核心共享同一条渲染管线,导出的产物和设计稿逐像素一致。

figo core开源 · MIT

C++ 矢量 UI 库:.fig 直接加载渲染、响应式布局、JS 脚本运行时(figoplay)、 可视化编辑器(figoedit)、独立 App 一键出包(figmapack:Windows exe / Web wasm / Android APK)。 免费用于任何项目。

在 GitHub 上获取 →
figo2unity
已发布
Unity 2022.3+ · UGUI

Unity 编辑器插件:.fig → UGUI 预制体(.prefab + 贴图 + .meta), 嵌套组件预制体、字体匹配、Gamma / Linear 色彩空间。

插件详情与工作流程 →

figo2cocos
即将推出
Cocos Creator 3.x

.prefab + 贴图 + .meta,拖进 assets/ 直接打开; UUID 内容派生,重跑输出稳定、diff 干净。

联系我们获取早期体验 →

figo2godot
即将推出
Godot 4

完整 Godot 工程输出:.tscn 场景 + 去重贴图 + 组件 PackedScene 预制体, React/HTML 页面也可一条命令直达。

联系我们获取早期体验 →

figmapack(独立 App 出包)属于开源核心的一部分,随 figo core 免费提供; 三个转换插件与核心库共享渲染代码,插件仅在"导出到对应引擎"这一步收费。

Contact

联系我们

商务合作、技术支持、问题反馈,欢迎直接联系:

邮箱:boruis@gmail.com
问题与需求:GitHub Issues
社区交流:Discord 服务器