Сборка Unity WebGL выдает ошибки

введите здесь описание изображения

Я работаю над многопользовательской игрой для платформы WebGL и использую (http://lockstep.io/ - SocketIo & сервер node.js ) для управления игрой.

Я сталкиваюсь с этими проблемами, как показано на прикрепленном изображении.

Я понятия не имею, о чем говорят эти ошибки?

Я не думаю, что проблема связана с моим кодированием, поскольку моя многопользовательская игра отлично работает в автономных сборках с более чем 4 экземплярами автономной сборки.

Но он даже не открывается в моей сборке WebGL.

WebGL не поддерживает многопоточность??

Пожалуйста, направляйте. О чем все эти ошибки? Можно ли решить эти проблемы?? или мне нужно изменить реализацию всего проекта?


person Sreejit Pillai    schedule 01.04.2016    source источник
comment
Было бы неплохо вернуться ко всем вашим вопросам и принять те ответы, которые вы сказали спасибо, или ответы, которые решили ваши проблемы. Их много. Если вы этого не сделаете, люди не будут отвечать на ваши вопросы.   -  person Programmer    schedule 01.04.2016
comment
Я не понял, что вы пытаетесь сказать. Я был груб? Извините, если я сделал что-то не так. Спасибо за комментарий   -  person Sreejit Pillai    schedule 01.04.2016


Ответы (1)


Unity WebGl не поддерживает многопоточность. Хотя Unity усердно работает над поддержкой Thread в WebGL.

Не сравнивайте автономную версию с WebGL, потому что многие функции не поддерживаются в WebGL. Глядя на ошибку, она говорит что-то о Thread, и это определенно может быть проблемой. С вероятностью 90% проблема именно в нем.

Вы не сможете решить эту проблему прямо сейчас, если не прекратите использование SocketIo.

Я не знаю, как реализован SocketIo, поэтому я не могу сказать вам, является ли Thread единственной проблемой, но если он использует другие API, не поддерживаемые в WebGL, тогда у вас все равно будут проблемы.

Единственный известный сетевой API, созданный и оптимизированный для работы с WebGL, — это новый веб-API Unity, который называется UnityWebRequest<. /а>. Вы должны изменить свой код, чтобы использовать это. Ссылка, которую я предоставил, содержит множество примеров, необходимых для начала работы с ней.

если вы используете что-то вроде webrequestm System.web или socket, WebGL рухнет. UnityWebRequest — единственное решение. Это быстрее, чем WWW, и для его использования вам потребуется Unity 5.2 и выше.

person Programmer    schedule 01.04.2016
comment
Спасибо. Я посмотрю на UnityWebRequest. Я не знаю, смогу ли я изменить код ввода-вывода сокета. Давайте посмотрим. - person Sreejit Pillai; 01.04.2016
comment
Это единственный вариант. Использовать что-то еще, кроме SocketIo, пока они не исправят свой API. SocketIo даже не упоминает поддержку WebGl на своем веб-сайте, так что это большой признак того, что он не работает с WebGL. - person Programmer; 01.04.2016
comment
Я столкнулся с той же проблемой... Можете ли вы предложить, как заменить объект сокета через UnityWebRequest. - person vikky; 21.04.2016
comment
@vikky В ссылке, которую я предоставил о UnityWebRequest, есть много примеров. Просто прокрутите вниз эту страницу, и вы увидите множество примеров. - person Programmer; 21.04.2016
comment
@Programmer на самом деле у меня есть код github.com/vovacooper/Unity3d_MQTT. этот код использует объект system.net.socket, который создает проблему в WebGl.... Теперь моя задача изменить код, чтобы он идеально работал на WebGl. Итак, моя идея состоит в том, чтобы изменить сокет объекта из UnityWebRequest. решить проблема..... - person vikky; 21.04.2016
comment
@vikky Это будет сложно портировать. Вам нужна команда людей, чтобы сделать это, или вам потребуется около недели, чтобы сделать это самостоятельно. Это не то, на что можно ответить здесь. - person Programmer; 21.04.2016
comment
@Programmer.... Предположим, если я храню данные (mqtt massege) в базе данных и хочу прочитать эти данные из нашего WebGl... Любая идея.... Пожалуйста, предложите - person vikky; 21.04.2016
comment
Если все, что вы хотите сделать, это прочитать данные из базы данных, то вам даже не нужна эта вещь по той ссылке, которую вы разместили. Вам нужно изучить php или c++. Вы звучите как новичок, поэтому я предлагаю вам перейти на php, потому что это легко. Вы делаете почтовый запрос от единства, используя UnityWebRequest на свой сервер. Затем php-код на вашем сервере будет извлекать запрошенную информацию из базы данных, возвращая результат в единство. - person Programmer; 21.04.2016