AirConsole Unity 插件 - WebGL 构建在 Unity 调试器工作时不起作用

AirConsole Unity plugin - WebGL build does not work while Unity debugger works

我们已经使用在 Unity 调试器中运行的 AirConsole-plugin 创建了一个 Unity3D 的小演示。 (如果我按下播放键,浏览器会打开,有时可以运行,有时不能运行。如果不能运行,可以重新启动 Unity 然后运行。) 如果我们创建一个版本或开发人员构建,它就不再有效。它会正确加载图像,但控制器(虚拟+phone)大部分时间保持'loading'。有时他们会到达第一个正确的 HTML 页面,但随后他们发送的消息似乎并没有到达屏幕端。 当我在构建后单击 'Open Exported Port' 时,它也不起作用,除了一次。

我收到过一次错误信息: "Uncaught TypeError: Cannot read property 'postQueue' of undefined"

此错误消息总是出现: “主要准备时间:176 毫秒 UnityLoader.js:1 Module.printErr @ UnityLoader.js:1"

你知道这些错误信息是什么意思吗?

我已经尝试了很多,但这似乎可以解决问题:确保在 Awake 方法中附加事件侦听器,就像它们在基本示例应用程序中所做的那样。

public class AirConsoleService : MonoBehaviour
{
    void Awake()
    {
        // register events
        AirConsole.instance.onReady += OnReady;
        AirConsole.instance.onMessage += OnMessage;
        AirConsole.instance.onConnect += OnConnect;
        AirConsole.instance.onDisconnect += OnDisconnect;
        // etc. ...
    }
    // etc. ...
}

我的问题是我的 AirConsoleService 是静态的而不是 MonoBehaviour 以确保只有一个 AirConsoleService 实例。它非常适合调试 'play' 模式,但在发布版本中,AirConsole 不知何故不知道发送消息的设备 ID(这意味着,我们从方法 ConvertDeviceIdToPlayerNumber 中得到 -1。这解释了为什么控制器收不到屏幕的任何信号。

我的解决方案:我已将其作为组件附加到 AirConsole 对象。

进一步说明:

  • 防病毒软件可能会阻止内容。
  • 你的PC/server一定要快。
  • 在开发过程中,记录 deviceID 和 playerID 以及当前活动的 deviceID。
  • 经常重启Unity或插件的集成webserver