2026-10-19 13:45:50
本文介绍了如何使用Go语言开发小游戏的关键步骤,包括资源打包、自动化处理、WebAssembly编译及项目总结。以下是具体实现细节:
资源打包使用file2byteslice工具将图片和配置文件嵌入二进制程序,避免手动拷贝资源文件。步骤如下:
安装工具:
$ go install github.com/hajimehoshi/file2byteslice打包单个文件:
$ file2byteslice -input ../images/ship.png -output resources/ship.go -package resources -var ShipPng$ file2byteslice -input ../images/alien.png -output resources/alien.go -package resources -var AlienPng$ file2byteslice -input config.json -output resources/config.go -package resources -var ConfigJson参数说明:
-input:输入文件路径。
-output:生成的Go文件路径。
-package:生成的Go文件所属包名。
-var:变量名,用于在代码中访问资源。
加载资源:修改游戏代码,从生成的变量中读取资源:
// alien.goimg, _, err := ebitenutil.NewImageFromReader(bytes.NewReader(resources.AlienPng))// ship.goimg, _, err := ebitenutil.NewImageFromReader(bytes.NewReader(resources.ShipPng))// config.gojson.NewDecoder(bytes.NewReader(resources.ConfigJson)).Decode(&cfg)编译二进制程序:
$ go build -o alien_invasion生成的可执行文件包含所有资源,可直接拷贝到其他电脑运行。
通过go generate简化资源打包流程,避免重复执行命令:
在main.go中添加注释:
//go:generate go install github.com/hajimehoshi/file2byteslice//go:generate mkdir resources//go:generate file2byteslice -input ../images/ship.png -output resources/ship.go -package resources -var ShipPng//go:generate file2byteslice -input ../images/alien.png -output resources/alien.go -package resources -var AlienPng//go:generate file2byteslice -input config.json -output resources/config.go -package resources -var ConfigJson注意://和go:generate之间不能有空格。
执行自动化命令:
$ go generate自动完成工具安装、目录创建和资源打包。
将游戏编译为WebAssembly(WASM),使其在网页中运行:
编译WASM文件:
$ GOOS=js GOARCH=wasm go build -o alien_invasion.wasm拷贝胶水代码:
从$GOROOT/misc/wasm目录拷贝wasm_exec.html和wasm_exec.js到项目目录。
修改wasm_exec.html,将加载的WASM文件名改为alien_invasion.wasm(或重命名生成的文件为test.wasm)。
启动Web服务器:
package mainimport ( "log" "net/http")func main() { if err := http.ListenAndServe(":8080", http.FileServer(http.Dir("."))); err != nil { log.Fatal(err) }}运行服务器:
$ go run main.go浏览器访问

当前游戏存在以下问题:
欢迎关注微信公众号【GoUpUp】,获取更多Go语言开发技巧和项目实战经验!