问题
unity打包成webgl的时候,会自动在window上挂载unityInstance。可以在js代码中调用unityInstance.SendMessage向unity发送消息。
但是使用微信小程序官方打包插件(minigame-unity-webgl-transform),将unity项目打包成小游戏之后,在js脚本的window上找不到unityInstance。在微信开发者工具的控制台的window上也找不到。(unity版本2019.4.33f1,微信开发者工具版本1.05.2204250,插件版本minigame.202206201602)
?
解决办法(手动挂载)
手动在window上挂载unityInstance ,在游戏加载好之后运行这几行代码,游戏未加载好的时候是没有unityNamespace的:
if (typeof window !== 'undefined' && typeof window.unityInstance === 'undefined') {
if (window.unityNamespace && window.unityNamespace.Module) {
// console.log("[set]: window.unityInstance = window.unityNamespace.Module");
window.unityInstance = window.unityNamespace.Module;
} else {
console.error('缺少unityInstance');
}
}
以上代码可以插入到以下两个地方之一,(二选一即可):
①插入到小游戏gameManager.onModulePrepared的回调方法里
在微信开发者工具,项目目录里找到“game.js”,然后找到“gameManager.onModulePrepared”,在它回调方法的开头加入这段代码。
?
②用户初次点击游戏界面或unity组件加载完成的时候,进行挂载。
这个就需要开发者自己判断挂载时机了,而且需要在unity端调用js函数。
?
|