[Unity转小游戏]微信开发者工具/微信小游戏中找不到unityInstance.(unityInstance is not defined)

问题

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)

[Unity转小游戏]微信开发者工具/微信小游戏中找不到unityInstance.(unityInstance is not defined)_第1张图片

解决办法(手动挂载)

手动在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转小游戏]微信开发者工具/微信小游戏中找不到unityInstance.(unityInstance is not defined)_第2张图片

 

②用户初次点击游戏界面或unity组件加载完成的时候,进行挂载。

这个就需要开发者自己判断挂载时机了,而且需要在unity端调用js函数。

 

你可能感兴趣的:(unity,微信小程序)