ShowH5 使用教程
打开编辑器

ShowH5 使用教程

从零开始,掌握可视化 H5 / 小游戏开发 —— 元素、积木、变量、脚本与发布全指南。

快速入门

ShowH5 是一款积木式可视化编辑器,你无需编写代码,只需拖拽元素、拼接积木,即可创建交互式 H5 页面和小游戏。本节将带你完成第一个作品。

创建第一个作品

新建项目 打开 ShowH5 编辑器,点击「新建作品」。在弹出的窗口中选择空白模板或从预设模板开始。舞台默认尺寸为 360 × 560,适合手机竖屏展示。
添加元素 在左侧元素面板中,将「文本」元素拖入舞台。选中该元素后,右侧属性面板会显示可编辑的属性:文字内容、位置 (x, y)、尺寸 (w, h)、字体大小、颜色、可见性等。
编写脚本 切换到「脚本」标签页。选择目标元素,绑定事件(如 event_click),然后拖入积木来定义行为。例如用「设置文本」积木在点击时改变文字。
预览与导出 点击右上角「预览」按钮实时查看效果。满意后点击「导出」生成独立 HTML 文件,或发布到社区分享给他人。

一个最小示例

下面是一个最简项目的效果 —— 一个按钮,点击后改变文本内容。点击右侧按钮可直接在编辑器中打开此示例:

你好 H5
点击按钮后文本变为 "Hello, ShowH5!",展示最基础的元素绑定与事件触发。
提示:项目数据采用 JSON 结构,包含 titlebgstageelementsscriptsvariables 六个顶层字段。理解这个结构有助于你进阶定制和导出。
新手教程:首次进入编辑器时会自动弹出本教程,带你快速了解元素、积木、脚本与发布流程。如果你关闭了它,也可以随时在「我的作品」页面点击「新手教程」按钮重新启动学习。

元素类型

ShowH5 提供 12 种元素类型,覆盖 H5 页面与小游戏开发所需的所有基础组件。每种元素都有一组可配置的属性,通过右侧属性面板进行编辑。所有元素共享基础属性 xywhvisible

按钮 Button
可点击的交互元素,用于触发事件。最常用的交互入口。
textbgColortextColorfontSizeborderRadius
文本 Text
显示静态或动态文字,支持 ${变量} 插值。用于标题、说明、得分等。
textfontSizetextColorfontWeighttextAlign
图片 Image
通过 URL 加载并显示图片,支持自适应缩放。
srcobjectFitborderRadius
形状 Shape
矩形、圆形等基础形状,常用于背景、装饰、游戏物体。
shapebgColorborderColorborderWidthborderRadius
输入框 Input
单行文本输入,用于表单收集、用户名输入等。
placeholdervaluefontSizetextColor
多行文本 Textarea
多行文本输入区域,适合长文本、留言、代码片段。
placeholdervaluerowsfontSize
链接 Link
超链接元素,点击跳转到指定 URL。
texthreftextColorfontSize
视频 Video
视频播放器,支持播放控制与循环。
srccontrolsautoplayloop
音频 Audio
音频播放器,用于背景音乐和音效。
srccontrolsautoplayloop
分割线 Divider
水平分隔线,用于视觉上的内容分区。
colorthicknesswidth
容器 Container
可容纳子元素的容器,支持嵌套布局与分组管理。
bgColorborderRadiuspaddingchildren
iframe
嵌入外部网页,用于集成第三方页面或地图。
srcscrollingborder

元素属性一览

属性类型说明示例
idstring元素唯一标识,脚本通过它引用"e1"
typestring元素类型"text"
x / ynumber左上角坐标(px)10
w / hnumber宽高(px)100
textstring显示文字(按钮/文本/链接)"点我"
fontSizenumber字体大小(px)16
textColorstring文字颜色"#1a1a1a"
bgColorstring背景颜色"#ffffff"
visibleboolean是否可见true
坐标系统:所有元素使用绝对定位,坐标原点 (0,0) 在舞台左上角,x 轴向右、y 轴向下。容器内子元素的坐标相对于容器左上角。

积木分类

积木是 ShowH5 的核心。每块积木代表一个具体操作,拼接在一起即可组成完整逻辑。积木按功能分为 7 大分类。在下方搜索框中输入关键词,或点击分类按钮筛选,点击任意积木卡片可查看详细用法

事件 Events 外观 Looks 运动 Motion 控制 Control 数据 Data 更多 More 游戏 Game

提示:事件积木(圆弧顶)是脚本的触发器,必须放在脚本最前面;C 型积木(带凹槽)可以嵌套其他积木 inside。游戏分类包含 200+ 积木,可在搜索框输入关键词快速定位。

变量系统

变量用于在脚本中存储和传递数据。ShowH5 的变量系统结合了显式读写插值语法两种方式,让动态内容变得简单。

${变量名} 插值语法

在任何文本类属性(文本元素、按钮文字、提示信息等)中,你可以使用 ${变量名} 语法引用变量。运行时,ShowH5 会自动将占位符替换为变量的当前值。

// 文本元素的内容属性
"text": "当前得分:${score} 分"

// 当 score = 100 时,显示为:
// 当前得分:100 分
实时更新:当变量的值发生变化时,所有引用了该变量的文本会自动刷新显示,无需手动调用「设置文本」积木。这让记分牌、计时器等场景的实现极为简洁。

设置与读取变量

使用数据分类下的积木来操作变量。首先在项目设置中声明变量,然后在脚本中读写。

声明变量(在项目 variables 数组中定义):

"variables": [
  { "name": "score", "value": 0 },
  { "name": "userName", "value": "玩家" },
  { "name": "isPlaying", "value": false }
]

设置变量(使用 data_set_var 积木):

{ "type": "data_set_var",
  "params": { "name": "score", "value": 100 } }

修改变量(数值增减,使用 data_change_var 积木):

{ "type": "data_change_var",
  "params": { "name": "score", "delta": 10 } }
// score 从 100 变为 110

读取输入并存入变量(使用 data_set_input 积木):

{ "type": "data_set_input",
  "params": { "element": "e3", "name": "userName" } }

变量使用场景

脚本系统

ShowH5 采用事件驱动的脚本系统。每个脚本绑定到一个目标元素和一个事件,由一串按顺序执行的积木组成。当事件触发时,脚本中的积木从上到下依次执行。

脚本结构

{
  "id": "s1",              // 脚本唯一 ID
  "target": "e2",         // 目标元素 ID(事件绑定到此元素)
  "event": "event_click",  // 触发事件类型
  "params": {},             // 事件参数(如按键代码)
  "blocks": [               // 积木序列,从上到下执行
    { "type": "action_set_text",
      "params": { "element": "e1", "text": "已点击" } },
    { "type": "action_set_color",
      "params": { "element": "e1", "color": "#34A853" } }
  ]
}

绑定事件到元素

每个脚本通过 target 字段绑定到一个元素,通过 event 字段指定触发条件。一个元素可以绑定多个脚本(对应不同事件),一个事件也可以触发多个积木。

选择目标元素 在脚本面板中,先选中要添加脚本的元素(如一个按钮)。
选择触发事件 从事件分类中拖入触发积木,如「当点击时」(event_click)。
拼接行为积木 在事件积木下方依次拼接外观、动作、控制等积木,组成完整逻辑链。
测试与调试 预览作品,触发事件验证行为。配合 more_console_log 积木输出调试信息。

脚本示例:点击切换显示

下面的脚本实现「点击按钮后隐藏自身并显示另一元素」的效果:

{
  "id": "s2",
  "target": "btnToggle",
  "event": "event_click",
  "params": {},
  "blocks": [
    { "type": "action_hide",
      "params": { "element": "btnToggle" } },
    { "type": "action_show",
      "params": { "element": "panelDetail" } },
    { "type": "action_set_text",
      "params": { "element": "lblStatus", "text": "详情已展开" } }
  ]
}
注意:每个脚本的 blocks 数组中,第一个积木通常应是对应的事件积木。如果使用「当页面加载时」(event_page_load) 事件,请确保目标元素在页面加载时已存在。

控制流积木的嵌套

控制积木(如 control_ifcontrol_repeat)可以包含子积木,形成嵌套结构:

{ "type": "control_if",
  "params": { "condition": "${score} >= 100" },
  "children": [
    { "type": "action_alert",
      "params": { "message": "恭喜通关!" } },
    { "type": "control_stop", "params": {} }
  ] }

游戏开发

ShowH5 内置游戏分区积木,支持 2D 和 3D 游戏开发。游戏积木封装了精灵管理、碰撞检测、主循环、3D 渲染等底层逻辑,让你专注于玩法设计。

2D 游戏开发流程

创建画布 添加一个 canvas 类型的容器元素作为游戏舞台,设置好尺寸。
创建精灵 使用 game_create_sprite 积木创建游戏角色(玩家、障碍物等),指定初始位置、大小和图片。
编写主循环game_loop 积木定义每帧执行的逻辑:移动精灵、检测碰撞、更新分数。
添加交互 绑定键盘事件 (event_key_down) 控制玩家移动,绑定碰撞事件处理游戏逻辑。

2D 游戏示例:弹跳球

一个经典的小球弹跳游戏 —— 小球下落碰到底部反弹,配合分数累加。点击下方按钮可直接在编辑器中体验并修改:

弹跳球 2D 游戏
小球受重力下落,碰到底部反弹并加分。包含 game_loop 主循环、精灵移动、碰撞检测与变量计分。

3D 游戏开发流程

3D 游戏基于 Show3D 自研引擎 v4.0 渲染(WebGL GPU 优先,HiDPI 自适应分辨率 + SMAA 抗锯齿 + CSM 级联阴影 + PCSS 软阴影 + EffectComposer 后处理 12+ 特效 + 骨骼动画 + GPU 粒子 + GLTF/OBJ/STL 模型加载 + WebXR VR/AR + KTX2 纹理压缩 + 内置物理引擎,无 WebGL 时自动回退 CPU 软件渲染),使用 game_3d_* 系列积木。典型流程如下:

v4.0 新增积木(11 个):game_3d_add_shape(57 种几何体)、game_3d_set_pbr_material(9 种高级材质)、game_3d_add_light(6 种灯光)、game_3d_set_postfx(12+ 后处理特效)、game_3d_load_model(GLTF/OBJ/STL/PLY)、game_3d_add_particles(GPU 粒子)、game_3d_play_animation(骨骼动画)、game_3d_enter_vrgame_3d_enter_argame_3d_load_ktx2game_3d_set_csm(级联阴影)。

外部引用 Show3D 库(脱离编辑器使用)

如果你想在自己的网站或外部应用中使用 Show3D 引擎(无需打开 ShowH5 编辑器),可以直接通过 <script> 标签引用。引擎由 ShowH5 服务直接托管,不依赖任何第三方 CDN

<!-- 一行引入,引擎挂载到全局 window.SH5_3D -->
<script src="https://h5.xcmdy.top/3d"></script>
<script>
  var S = SH5_3D;
  console.log('Show3D 版本:', S.version);  // 4.0.0
  var renderer = S.createRenderer(document.getElementById('canvas'));
  renderer.render([...], cam, lights, {});
</script>

支持的引用路径:

跨域与缓存:JS 文件已开启 CORS(Access-Control-Allow-Origin: *),可被任意域名引用;带 Cache-Control: public, max-age=3600, immutable 缓存头。升级版本后如需立即生效,加版本号查询参数:/3d?v=4.0.1。完整文档与在线 Demo 请访问 /3d/docs

3D 示例:旋转立方体

一个旋转的 3D 立方体演示 —— 使用 Show3D v4.0 引擎渲染(HiDPI 高清输出 + SMAA 抗锯齿 + PCSS 软阴影,无 WebGL 时回退 CPU 软件渲染),通过 game3d 系列积木创建场景并持续旋转。点击下方按钮可直接在编辑器中体验:

3D 旋转立方体
创建 3D 场景与立方体,设置相机位置,在主循环中每帧旋转物体。演示 game3d_create、game3d_camera、game3d_rotate 等积木的协作。

3D 示例:第一人称冒险游戏

一个完整的 3D 第一人称漫游游戏 —— 使用 game_3d_* 系列积木构建场景,支持 WASD 键盘移动触屏滑动转向。场景包含地面、墙壁、发光宝石,展示 Show3D 引擎的光照、阴影、材质和反射特效。

3D 冒险游戏
第一人称 3D 漫游,WASD 移动 + 触屏旋转视角。演示 game_3d_add_cube、game_3d_set_material、game_3d_set_camera(look-at)、game_is_key_down、event_touch_move 等积木的协作。

3D 游戏控制积木

3D 冒险游戏使用了以下关键积木来实现键盘和触屏控制:

WASD 移动原理:在 game_loop 中,先计算 yaw 角的 sin/cos 值得到方向向量,再用 game_is_key_down 检测 W/A/S/D 按键状态,根据按键累加相机坐标。最后用 game_3d_set_camera 更新相机位置和朝向目标。触屏滑动时,event_touch_move 计算 X 方向偏移量累加到 yaw,实现转向。
性能提示:2D 游戏中尽量减少精灵数量,碰撞检测使用简单矩形判定。3D 游戏中控制多边形数量,避免每帧创建新对象。使用 control_forever + control_wait 替代高频循环可降低 CPU 占用。

特效引擎

为了让游戏画面更有冲击力,ShowH5 内置了一整套特效积木,覆盖屏幕震动、爆炸、天气、光效等常见表现。所有特效均可在 game_loop 或事件脚本中触发,叠加使用即可组合出丰富的视觉效果。

使用建议:特效积木会产生大量粒子,叠加过多会影响性能。建议在关键瞬间触发,并在场景切换或不再需要时用 game_clear_effects 及时清理。天气类特效(雨、雪)通常在游戏启动时开启一次即可,无需每帧重复触发。

导出与发布

完成作品后,ShowH5 提供三种方式让你的作品走向用户:导出 HTML、发布到社区、部署静态站点。

导出 HTML

点击编辑器右上角「导出」按钮,可将作品打包为单个独立 HTML 文件。该文件包含全部元素、脚本和运行时引擎,无需服务器即可在浏览器中直接打开运行。

发布到社区

点击「发布」可将作品提交到 ShowH5 社区。发布后:

部署静态站点

导出的 HTML 文件可以部署到任何静态托管平台:

Nginx / Apache
将 HTML 文件上传到服务器 web 目录,配置静态文件服务即可访问。
GitHub Pages
推送到仓库,开启 Pages 服务,免费获得 HTTPS 域名。
Vercel / Netlify
拖拽上传或关联 Git 仓库,自动部署并分配全球 CDN。
对象存储
上传到 OSS / S3 等对象存储,开启静态网站托管功能。

部署示例(Nginx)

# nginx.conf
server {
    listen 80;
    server_name your-domain.com;
    root /var/www/showh5;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
跨域提示:如果作品引用了外部图片或 API,部署后可能遇到跨域 (CORS) 问题。请确保资源服务器允许跨域访问,或将资源一同部署到同源目录下。

协作系统

ShowH5 提供实时联机协作功能,让你可以邀请伙伴一起编辑同一个作品。无论是分工制作素材、共同调试脚本,还是多人头脑风暴创意,协作系统都能让大家在同一舞台上实时看到彼此的操作。单个房间最多支持 16 人同时在线协作。

会员等级与协作席位

协作席位数由你的会员等级决定。发起者创建协作房间时,可加入的人数上限按当前等级的席位数计算。

会员等级协作席位数说明
Free0(不支持)不能发起协作,但可通过链接加入他人房间
Pro2 人适合双人结对创作
Plus4 人适合小型创作小组
Max8 人适合中型团队协作
Ultra16 人最大规模,适合大型团队 / 课堂协作
席位说明:席位数包含发起者本人。例如 Pro 等级 2 人席位,发起者占用 1 席,还可再邀请 1 位协作者加入。Free 用户虽不能发起协作,但仍可通过他人分享的链接加入房间参与编辑。

如何发起协作

打开作品 进入「我的作品」页面,打开你想要协作的某个作品进入编辑器。
点击「发起协作」 在作品页面点击「发起协作」按钮,系统会为你创建一个协作房间并生成专属房间 Token 与分享链接。
分享链接 将生成的分享链接发送给同伴,对方打开链接即可加入房间,开始实时协作编辑。

如何加入协作

收到发起者分享的协作链接后,点击链接即可进入对应的协作房间。也可以在编辑器的协作面板中直接粘贴房间 Token 或链接加入。加入后你的操作会实时同步给房间内的所有人,同时你也能看到他人的编辑动作。

发起者权限

作为协作房间的发起者,你拥有完整的管理权限,可对房间和成员进行管控:

聊天室功能

每个协作房间都内置聊天室,成员可以在编辑的同时实时交流。聊天室支持文字消息,方便讨论玩法、分配任务、反馈问题,无需切换到第三方通讯工具。

保存与导出归属

归属规则:协作过程中的保存与导出操作均归属于发起者账户。也就是说,作品存入云端、导出 HTML / .sh5 文件时,都会记录在发起者名下并占用发起者的配额。协作者只能参与实时编辑,无法将作品保存到自己的账户。如需独立保存,请让发起者导出 .sh5 文件后转发给你再导入。
协作小贴士:建议在协作前与伙伴明确分工(如一人负责元素与素材、一人负责脚本逻辑),避免同时编辑同一区域造成冲突。结束协作后及时由发起者保存,确保进度不丢失。

常见问题

ShowH5 需要编程基础吗?
不需要。ShowH5 采用积木拼接方式,所有逻辑通过拖拽积木完成,无需手写代码。当然,了解基本的编程概念(变量、条件、循环)会帮助你更好地组织逻辑。
导出的 HTML 文件体积很大怎么办?
导出文件包含运行时引擎,通常在几百 KB。如果过大,检查是否引用了高分辨率图片或大体积音视频。建议将媒体资源压缩后通过 URL 引用,而非内嵌。
变量插值 ${变量名} 没有生效?
请检查三点:① 变量是否已在 variables 数组中声明;② 变量名拼写是否完全一致(区分大小写);③ 该属性是否支持插值(仅文本类属性支持)。如果手动用「设置文本」积木覆盖了内容,插值会被替换为静态文本。
游戏运行卡顿如何优化?
2D 游戏:减少精灵数量,简化碰撞检测,避免在主循环中创建新对象。3D 游戏:降低多边形数量,减少光源数量,使用 control_wait 控制更新频率。同时检查是否有过多的 control_forever 循环同时运行。
一个元素可以绑定多个事件吗?
可以。为同一元素创建多个脚本,每个脚本指定不同的 event 即可。例如一个按钮可以同时绑定 event_clickevent_mouse_enterevent_mouse_leave 三个事件,分别执行不同的积木序列。
如何让作品适配不同屏幕尺寸?
ShowH5 舞台默认使用固定尺寸(如 360×560),运行时会自动缩放以适配屏幕宽度,保持比例不变。如需全屏适配,可在导出时选择「响应式」选项,元素将按百分比布局。
脚本能调用 JavaScript 原生 API 吗?
标准 ShowH5 积木不支持直接编写 JS 代码。但可以通过 iframe 元素嵌入自定义网页,或使用 action_set_style 积木设置任意 CSS。高级用户可导出 HTML 后手动编辑添加自定义脚本。
发布到社区的作品可以删除吗?
可以。在「我的作品」页面找到已发布作品,点击「取消发布」即可从社区下架。取消发布后分享链接将失效,但项目数据仍保留在你的账户中,可随时重新发布。
3D 游戏在手机上不显示?
3D 渲染基于 Show3D 自研引擎 v3.2,优先使用 WebGL GPU 渲染(HiDPI 自适应分辨率 + SMAA 抗锯齿),无 WebGL 时自动回退 CPU 软件渲染,兼容所有现代浏览器。如果 3D 物体不显示,请检查:canvas 元素的尺寸是否为零、相机位置 (z) 是否设置合理、game_loop 是否正确启动、光源是否已添加(game_3d_add_light)。
如何与他人协作开发?
ShowH5 已支持实时联机协作。在作品页面点击「发起协作」即可创建协作房间并生成分享链接,把链接发给同伴就能一起实时编辑,单间最多支持 16 人。协作席位数由会员等级决定(详见协作系统章节)。此外,你仍可导出 .sh5 工程文件进行离线协作。