适应于团结引擎版本发布的全部小游戏,包括但不限于如下:
微信小游戏、bilibili小京戏、京东小游戏、抖音小游戏、支付宝小游戏、快手小游戏等、宿主小游戏。
团结引擎版本:1.6.2
一、Unity调用Js代码:
1、WX-WASM-SDK-V2目录下的Editor/template/minigame目录下创建一个GameRecommend.js文件。
不同的小游戏可能WX-WASM-SDK-V2这个目录不一样,比如宿主小游戏好像是TJ-WASM,
但是子目录都是template/minigame,如果不存在,就创建。
2、GameRecommend.js里的代码如下:
代码说明:这里是js代码,不是C#代码。
没有funtion的代码会在启动时直接执行。funtion方法可以在Unity中调用。- // 让 window.GameRecommend 变成对象
- window.GameRecommend = window.GameRecommend || {};
- // 把方法挂上去
- window.GameRecommend.doLogin = doLogin;
- // 同时兼容挂载到 GameGlobal(你原有逻辑)
- if (typeof GameGlobal !== "undefined")
- {
- GameGlobal.doLogin = doLogin;
- }
- function sendMsgToUnity(msg) {
- // 兼容 Unity 实例的不同挂载方式(微信小游戏 Unity 适配的两种常见形式)
- const unityInst = window.unityInstance || GameGlobal.manager?.gameInstance;
- if (unityInst) {
- unityInst.Module.SendMessage("GameGlobal", "OnLoginSuccess", msg);
- } else {
- console.error("Unity 实例未加载完成,500ms后重试");
- setTimeout(() => sendMsgToUnity(msg), 500);
- }
- }
- async function doLogin() {
- try {
- console.error("向Unity发送消息:", "现在开始");
- sendMsgToUnity("测试Unity接收")
- console.error("向Unity发送消息:", "发送结束");
- } catch (err) {
- console.error("失败:", err);
- }
- }
复制代码 3、在game.js中导入这个GameRecommend.js。
4、在C#代码中调用:- WX.CallJSFunction("GameRecommend", "doLogin", new object[0]);
复制代码 这里是C#代码,调用GameRecommend.js中没有参数的doLogin方法,第3个参数需要new object[0]。
不要再使用webgl中传统的Application.ExternalCall()方式来调用。
运行之后,在GamRecommend.js的doLogin方法中可以打印内容。
二、在js中调用Unity中的C#代码。
1、unity层面和传统的方式一样,首先设置一个gameobject,名字取为GameGlobal,
随便给个脚本,里面有一个public的非全局方法,带一个参数,和传统的接收一样。
2、js中的调用:
区别于传统的webGL,传统webgl一般是window.unityInstance可以直接用,但在小游戏里需要再点一个module出来。
再启动测试。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |