微信小游戏不是“小程序里嵌一个游戏”,而是基于微信运行时的轻量游戏形态。它没有 DOM,不能直接写 WXML/WXSS,核心是 Canvas/WebGL 渲染 + wx API + JavaScript 逻辑。对个人开发者和小团队来说,它门槛低、传播快,适合休闲、益智、IO、模拟经营等轻量玩法。
一个原生微信小游戏项目,最核心的文件很少:
game.js:入口文件,相当于程序的主函数。game.json:全局配置,比如屏幕方向、状态栏、分包。project.config.json:开发者工具的项目配置。如果你用 Cocos Creator、LayaAir、Unity 等引擎,最终也会导出一个微信小游戏项目,入口仍然是 game.js,只是代码由引擎生成。
下面这段代码很少,但已经包含画布、触摸和动画循环。新建项目后,把 game.json 和 game.js 改成这样即可运行。
game.json:
{
"deviceOrientation": "portrait",
"showStatusBar": false
}game.js:
const canvas = wx.createCanvas()
const ctx = canvas.getContext('2d')
const info = wx.getWindowInfo ? wx.getWindowInfo() : wx.getSystemInfoSync()
const w = info.windowWidth
const h = info.windowHeight
canvas.width = w
canvas.height = h
let x = w / 2
let y = h / 2
wx.onTouchMove(e => {
const t = e.touches[0]
x = t.clientX
y = t.clientY
})
function loop() {
ctx.fillStyle = '#101418'
ctx.fillRect(0, 0, w, h)
ctx.fillStyle = '#4fc3f7'
ctx.beginPath()
ctx.arc(x, y, 30, 0, Math.PI * 2)
ctx.fill()
ctx.fillStyle = '#fff'
ctx.font = '16px sans-serif'
ctx.fillText('拖动手指移动圆点', 20, 40)
requestAnimationFrame(loop)
}
loop()这段代码做了四件事:创建画布、获取屏幕尺寸、监听触摸、每帧重绘。点击“编译”就能看到效果。
wx.onShow、wx.onHide,用来暂停和恢复游戏。wx.onTouchStart、wx.onTouchMove、wx.onTouchEnd。wx.createInnerAudioContext。wx.setStorageSync、wx.getStorageSync。wx.request,需要配置合法域名。wx.shareAppMessage。本地调试 → 真机预览 → 上传体验版 → 提交审核 → 发布。
注意:小游戏审核通常需要类目资质、隐私协议、内容合规;涉及内购或虚拟支付要版号。个人主体能做的类目有限,商业化前先查最新政策。
devicePixelRatio 适配高清屏,但别盲目放大画布。new 对象,减少 GC。document、window。game.js,不是小程序的 app.js。先做玩法原型,再补 UI、音效、存档、排行榜和广告。不要一开始就上大引擎大项目。小游戏的核心是“短平快”:3 秒懂,30 秒爽,1 分钟愿意分享。
微信小游戏开发并不神秘:一个入口文件、一个配置、一块画布,就能跑起来。上面不到 30 行代码已经包含渲染、触摸和循环。接下来要做的,是把你的玩法一点点加进去。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。