目前 Galacean 已经适配到支付宝和淘宝小程序。本教程默认开发者已经具备一定的小程序开发能力,如果没有,请阅读下面教程,下载小程序开发工具及申请 AppId:
小程序项目发布:
Galacean 编辑器导出支付宝小程序的功能仍在开发中,交互方式和模板工程后续可能会有改动。
点击下载后会下载一个 zip 文件,解压文件目录结构如下:
.
├── mini # 📁 小程序执行目录
│ ├── dist # 📁 代码构建结果
│ ├── pages # 📁 小程序页面
│ ├── app.json # ⚙️ 项目配置文件
│ ├── app.js # 代码入口
├── public # 📁 公共资源目录
│ ├── scene.json # 场景文件
│ └── ... # 其他
├── src # 📁 源代码目录
├── mini.project.json # ⚙️ 工程配置文件
├── project.json # ⚙️ 编辑器导出工程配置
└── ... # 其他
接下来就可以安装依赖和启动项目:
npm install
npm run dev
用小程序 IDE 打开可以看到:
直接使用『上传到 CDN 』即可(在导出面板选项中,参考上图),使用集团默认 CDN 即可。若想使用自定义 CDN,参考非蚂蚁集团内部用户。
目前还没有支持小程序的本地文件加载。
npm install @galacean/engine-toolkit-controls -S
import { OrbitControl } from "@galacean/engine-toolkit-controls/dist/miniprogram";
OrbitControl
组件需要添加到相机节点上。
cameraEntity.addComponent(OrbitControl);
因为小程序不支持 addEventListener
添加监听事件,得手动添加事件的模拟,并且小程序的 canvas 的多指触控存在 bug,所以添加一个和 canvas 大小和位置一样的 view 层去派发触摸事件:
<view>
<canvas
onReady="onCanvasReady"
style="width:px;height:px"
type="webgl">
</canvas>
<view
style="width:px;height:px;top:0px;position:absolute;"
onTouchCancel="onTouchCancel"
onTouchStart="onTouchStart"
onTouchMove="onTouchMove"
onTouchEnd="onTouchEnd"
</view>
</view>
import { dispatchPointerUp, dispatchPointerDown, dispatchPointerMove, dispatchPointerLeave, dispatchPointerCancel } from "@galacean/engine-miniprogram-adapter";
Page({
...
onTouchEnd(e) {
dispatchPointerUp(e);
dispatchPointerLeave(e);
},
onTouchStart(e) {
dispatchPointerDown(e);
},
onTouchMove(e) {
dispatchPointerMove(e);
},
onTouchCancel(e) {
dispatchPointerCancel(e);
}
})
需要 Node.js 版本 >=12.0.0.
使用 yarn 创建
yarn create @galacean/galacean-app --template miniprogram
使用 npm 6.x 版本创建
npm init @galacean/galacean-app --template miniprogram
使用 npm 7.x 版本创建
npm init @galacean/galacean-app -- --template miniprogram
根据提示完成后续步骤后,可以使用小程序开发工具打开项目:
选择对应目录即可,顺利的话可以看到:
本教程假设你已经有一定开发能力,若不熟悉小程序开发,请详细阅读小程序开发文档。
Terminal
,安装依赖:# 使用 npm
npm install @galacean/engine --save
npm install @galacean/engine-miniprogram-adapter --save
# 使用 yarn
yarn add @galacean/engine
yarn add @galacean/engine-miniprogram-adapter
app.json
里添加下面配置项:{
...
"window": {
...
"v8WorkerPlugins": "gcanvas_runtime",
"v8Worker": 1,
"enableSkia": "true"
}
}
<canvas onReady="onCanvasReady" id="canvas" type="webgl" />
使用 onReady
配置 canvas
初始化回调。需要设置 canvas
的 id,后面会用到。
.js
代码文件里添加回调函数,使用 my._createCanvas
创建所需的 canvas 上下文,之后在 success
回调里使用 galacean 即可.注意:
import * as GALACEAN from "@galacean/engine/dist/miniprogram"
引入小程序依赖。registerCanvas
注册 canvas
。详情可以参考下面代码:
import * as GALACEAN from "@galacean/engine/dist/miniprogram";
import { registerCanvas } from "@galacean/engine-miniprogram-adapter";
Page({
onCanvasReady() {
my._createCanvas({
id: "canvas",
success: (canvas) => {
// 注册 canvas
registerCanvas(canvas);
// 适配 canvas 大小
const info = my.getSystemInfoSync();
const { windowWidth, windowHeight, pixelRatio, titleBarHeight } = info;
canvas.width = windowWidth * pixelRatio;
canvas.height = (windowHeight - titleBarHeight) * pixelRatio;
// 创建引擎
const engine = new GALACEAN.WebGLEngine(canvas);
// 剩余代码和 Galacean Web 版本一致
...
},
});
}
})