微信 API 使用说明
整合包内的 Godot 引擎扩展了 5 个微信 API 单例类,可以在 GDScript 中直接调用微信小游戏原生能力。
| 单例名 | 用途 |
|---|---|
WeChatSDK | 通用微信 API 桥接、登录、环境检测 |
WeChatAuth | 微信用户授权按钮 |
WeChatBannerAd | 横幅广告 |
WeChatInterstitialAd | 插屏广告 |
WeChatRewardedVideoAd | 激励视频广告 |
运行环境检测
Section titled “运行环境检测”建议在调用微信 API 前先判断是否真的运行在微信小游戏环境中:
func is_wechat_runtime() -> bool: return ClassDB.class_exists("WeChatSDK") and WeChatSDK.is_available()不要只用 ClassDB.class_exists("WeChatSDK") 判断运行环境。这个类可能在其它导出目标中也存在,但普通 Web 环境里没有微信的 wx 对象。
通用微信 API
Section titled “通用微信 API”WeChatSDK.call_wx() 适用于标准 success/fail 回调模式的微信 API:
if WeChatSDK.is_available(): print("当前运行在微信小游戏环境")
WeChatSDK.login(func(success: bool, result: String): if success: var data = JSON.parse_string(result) var code: String = data.get("code", "") print("登录成功, code: ", code))
WeChatSDK.call_wx("getSystemInfoSync", {}, func(success: bool, result: String): if success: var info = JSON.parse_string(result) print("屏幕尺寸: %sx%s" % [info.get("screenWidth", 0), info.get("screenHeight", 0)]))常见用途:
login:获取微信登录 codegetLaunchOptionsSync:读取启动参数onShow:监听小游戏从后台切回shareAppMessage:分享给好友getSystemInfoSync:读取设备和屏幕信息
用户授权按钮
Section titled “用户授权按钮”微信用户信息按钮需要创建原生按钮对象,并在流程结束后手动销毁:
WeChatAuth.create_user_info_button({ "type": "text", "text": "微信授权登录", "style": { "left": 80, "top": 400, "width": 220, "height": 50, "lineHeight": 50, "backgroundColor": "#07c160", "color": "#ffffff", "textAlign": "center", "fontSize": 22, "borderRadius": 10, }}, func(success: bool, result: String): if success: var info = JSON.parse_string(result) var user_info: Dictionary = info.get("userInfo", {}) print("昵称: ", user_info.get("nickName", "")))
WeChatAuth.destroy_user_info_button()授权按钮的坐标使用微信 CSS 像素,不是 Godot viewport 坐标。重复创建按钮时会自动销毁前一个按钮,但仍建议在登录流程结束、页面切换或超时后主动调用 destroy_user_info_button()。
横幅广告:
WeChatBannerAd.create("ad-unit-xxx", { "left": 0, "top": 0, "width": 320,})
WeChatBannerAd.show(func(success: bool, result: String): print("Banner 显示: ", success))
WeChatBannerAd.hide()WeChatBannerAd.destroy()插屏广告:
WeChatInterstitialAd.create("ad-unit-xxx")
WeChatInterstitialAd.show(func(success: bool, result: String): if success: print("插屏广告已关闭") else: print("插屏广告展示失败: ", result))激励视频广告:
WeChatRewardedVideoAd.create("ad-unit-xxx")
WeChatRewardedVideoAd.show(func(success: bool, result: String): if success: var data = JSON.parse_string(result) if data.get("isEnded", false): print("用户看完了广告,发放奖励") else: print("用户中途关闭了广告") else: print("广告展示失败: ", result))