FinClip为企业提供小程序生态圈技术产品,开发者可在FinClip小程序开发帮助中心找到相关FinClip小程序指引

# 小游戏开发指南

请注意

自基础库2.11.6起 FinClip 小程序 SDK 已实现对小游戏项目的支持与运行能力。目前已经支持LayaboxEgret(白鹭)Cocosd-jsunity等游戏引擎直接导出的小游戏类型项目。

若您需要适配其他游戏引擎,或为小游戏项目获得帮助咨询,请在开发者社群中反馈,或致电 0755-86967467 与我们联系。

# 小游戏目录结构

小游戏包含一个描述整体程序的 app 。

一个小游戏主体部分由两个文件组成,必须放在项目的根目录,如下:

文件 必需 作用
game.js 小游戏主逻辑,入口文件
game.json 小游戏公共配置
project.config.json 项目配置文件

# 基础能力

# 存储

每个小程序都可以有自己的本地缓存,可以通过 ft.setStorage、ft.getStorage、ft.clearStorage,ft.removeStorage 对本地缓存进行读写和清理。

# 渲染

# 画布

小游戏只有一个上屏画布,可以有多个离屏画布。通过 wx.createCavans 可以创建一个画布对象。

# 绘图上下文及接口。

通过 Canvas.getContext 可以创建绘图上下文。返回的具体绘图上下文类型可查看 RenderingContext。

# 模块化

# 模块化

小程序目前暂不支持「直接引入 node_modules」,需要通过 构建 npm 完成引入工作,需要时也可直接复制代码到小程序的目录中,再进行使用。

注意

exports 是 module.exports 的一个引用,因此在模块里边随意更改 exports 的指向会造成未知的错误。所以更推荐开发者采用 module.exports 来暴露模块接口,除非你已经清晰知道这两者的关系。

// common.js
function sayHello(name) {
  console.log(`Hello 小游戏框架 !`)
}
function sayGoodbye(name) {
  console.log(`Goodbye 小游戏框架 !`)
}

module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbye

# 全局对象

类似于浏览器的 Window 和 NodeJS 的 global,小游戏也有一个全局对象 GameGlobal。通过 GameGlobal 可以在多个文件中传递变量。

提示

在小游戏中没有 window 全局对象,如果有需要请将数据挂载到 GameGlobal。

// a.js

GameGlobal.globalData = 1
// b.js

console.log(GameGlobal.globalData) // 输出 "1"

# 小游戏DEMO

请注意

为了帮助您调试或使用小游戏相关能力,我们从网上搜集整理了一些开源小游戏源码,供您测试使用。
使用时请务必注意升级您当前的 FinClip Studio 至2.0.x 或更高版本,若您在 FinClip Studio 中使用导入功能加载本地目录时,请务必将项目类型修改为小游戏

# 1. 砍树小游戏

源码链接 (opens new window)

# 2. 微信飞机大战

源码链接 (opens new window)

# 3. 拼图 DEMO(基于 pixi.js)

运行时打开压缩包内的dist目录,源码链接 (opens new window)

# 4.密室逃生 DEMO(基于 egret)

运行时打开压缩包内的RoomRun_wxgame目录,源码链接 (opens new window)

# 5. 消消乐,Taxi,羊了个羊 DEMO(基于 Cocos)

运行时打开压缩包内的build/wechatgame目录

  1. Cocos 圆环消消乐 (opens new window)
  2. TaxiGame3D (opens new window)
  3. 羊了个羊 DEMO (opens new window)

# 6. 帧率测试 DEMO

帧率测试 DEMO (opens new window)

# UnityPlugin 兼容指南

当前已有 Unity 小游戏的兼容方案,若需了解,可在开发者社群中反馈,或致电 0755-86967467 与我们联系。

© FinClip with ❤ , Since 2017