为降低 Unity 开发者接入平台能力的门槛,我们在转换插件中内置了 C# SDK,开发者可直接通过熟悉的 C# 语言访问平台提供的能力。
⚠️ 注意:Unity 的 PlayerPrefs 在 WebGL 平台上无法使用,SDK 提供了平台专用的 PlayerPrefs 替代方案,务必区分使用。
QG.Login(
(msg) => Debug.Log("登录成功:" + JsonUtility.ToJson(msg)),
(msg) => Debug.Log("登录失败:" + msg.errMsg)
);
var param = new PayParam { productName = "金币礼包", orderAmount = 10 };
QG.Pay(param,
(msg) => Debug.Log("支付成功:" + JsonUtility.ToJson(msg)),
(msg) => Debug.Log("支付失败:" + JsonUtility.ToJson(msg)),
(msg) => Debug.Log("支付完成:" + JsonUtility.ToJson(msg))
);
支付流程:客户端调用 QG.Pay → 请求 sdkPayUrl → 获取平台订单信息 → 拉起支付 → 支付完成后客户端与服务器回调。
广告位获取:
var bannerId = (string)QG.GetAdInfo()["bannerAd"]["id1"];
展示 Banner 广告:
bannerAd = QG.CreateBannerAd(new QGCreateBannerAdParam {
adUnitId = bannerId,
adIntervals = 30,
style = new Style()
});
bannerAd.OnLoad(() => bannerAd.Show());
bannerAd.OnError((err) => Debug.Log("Banner 加载失败: " + JsonUtility.ToJson(err)));
展示插屏、激励视频、原生模板广告方式类似。
QG.InstallShortcut("",
(msg) => Debug.Log("创建成功"),
(msg) => Debug.Log("创建失败:" + msg.errMsg)
);
QG.HasShortcutInstalled(
(msg) => Debug.Log("已创建图标"),
(msg) => Debug.Log("尚未创建图标")
);
QG.GetSystemInfo(
(msg) => Debug.Log("系统信息:" + msg.data),
(msg) => Debug.Log("获取失败:" + msg.errMsg)
);
var infoSync = QG.GetSystemInfoSync();
Debug.Log("同步系统信息:" + infoSync);
QG.ExitApplication();
QG.SetClipboardData("复制内容",
(msg) => Debug.Log("复制成功"),
(msg) => Debug.Log("复制失败:" + msg.errMsg)
);
QG.GetClipboardData(
(msg) => Debug.Log("剪贴板内容:" + msg.data),
(msg) => Debug.Log("读取失败:" + msg.errMsg)
);
展示键盘:
QG.ShowKeyboard(new KeyboardParam {
defaultValue = "快游戏",
maxLength = 100,
confirmType = "done"
},
(msg) => Debug.Log("展示成功"),
(msg) => Debug.Log("取消输入"),
(msg) => Debug.Log("完成输入")
);
监听与移除事件:
QG.OnKeyboardInput((msg) => Debug.Log("输入中: " + msg.value));
QG.OnKeyboardConfirm((msg) => Debug.Log("确认输入: " + msg.value));
QG.OffKeyboardInput();
QG.HideKeyboard();
示例以 int 类型为例,其他如 string/float 同理。
if (Application.platform == RuntimePlatform.WebGLPlayer)
QG.StorageSetIntSync("gold", 100);
else
PlayerPrefs.SetInt("gold", 100);
int gold = Application.platform == RuntimePlatform.WebGLPlayer
? QG.StorageGetIntSync("gold", 0)
: PlayerPrefs.GetInt("gold", 0);
QG.StorageDeleteKeySync("gold");
QG.StorageDeleteAllSync();
bool hasKey = QG.StorageHasKeySync("gold");
if (Application.platform != RuntimePlatform.WebGLPlayer)
PlayerPrefs.Save();
其他接口可参考 QG.cs
代码进行接入。示例代码可下载查看FileSystem.cs以及SystemTest.cs
若需调用自定义 JS,可通过 qg.minigame.jslib
添加接口,在 QGMiniGameManager
中封装调用。
参考 Unity 官方手册:WebGL 与浏览器交互