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

Posted Aqvdrt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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)

解决办法(手动挂载)

手动在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函数。

 

以上是关于[Unity转小游戏]微信开发者工具/微信小游戏中找不到unityInstance.(unityInstance is not defined)的主要内容,如果未能解决你的问题,请参考以下文章

Unity 之 发布WebGL转微信小游戏过程详解

unity 转微信小游戏 资源优化

如何使用 Unity制作微信小游戏,微信小游戏制作方案 最新完整详细教程来袭持续更新

如何使用 Unity制作微信小游戏,微信小游戏制作方案 最新完整详细教程来袭持续更新

如何使用 Unity制作微信小游戏,微信小游戏制作方案 最新完整详细教程来袭持续更新

如何使用 Unity制作微信小游戏,微信小游戏制作方案 最新完整详细教程来袭持续更新