0

我们创建了一个带有 AirConsole-plugin 的 Unity3D 小演示,它在 Unity 调试器中运行。(如果我按下播放键,浏览器会打开,有时可以工作,有时不能。如果不能,可以重新启动 Unity,然后就可以工作了。)工作。它将正确加载图像,但控制器(虚拟+电话)大部分时间都处于“加载”状态。有时他们会到达第一个正确的 HTML 页面,但随后他们发送的消息似乎没有到达屏幕端。当我在构建后单击“打开导出端口”时,它也不起作用,除了一次。

我曾经收到一条错误消息:“未捕获的 TypeError:无法读取未定义的属性 'postQueue'”

此错误消息总是出现:“pre-main prep time: 176 ms UnityLoader.js:1 Module.printErr @ UnityLoader.js:1”

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

4

1 回答 1

0

我已经尝试了很多,但这似乎解决了问题:确保在 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. ...
}

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

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

进一步说明:

  • 防病毒软件可能会阻止内容。
  • 您的 PC/服务器必须很快。
  • 在开发过程中,记录 deviceID 和 playerID 以及当前活动的 deviceID。
  • 经常重启 Unity 或者插件的集成 webserver
于 2016-04-21T22:37:39.023 回答