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
我们已经使用在 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