Исключение: не удалось собрать WebGL Player при сборке для WebGL - PullRequest
0 голосов
/ 04 февраля 2019

Я пробую этот пример кода для WebGL, и проблема в том, что моя сборка не удалась.Вот мой код.

jslib

margeInto(LibraryManager.library,{

    GameObjectHasClicked : function (str){
        window.alert(Pointer_stringify(str));
    },
        Hello: function (){
        window.alert(Pointer_stringify(str));
    },


});

И сценарий UnityC #

using System.Runtime.InteropServices;
using UnityEngine;

public class SendInfoToBrowserJS : MonoBehaviour {

    [DllImport("__Internal")]
    private static extern void GameObjectHasClicked(string pos);

    [DllImport("__Internal")]
    private static extern void Hello();


    private void OnMouseDown()
    {
        string currentPos = this.transform.position.ToString();
        Debug.Log("cube clicked "+ currentPos);
        //#if UNITY_WEBGL
        Hello();
        GameObjectHasClicked(currentPos);
        //#endif
    }


}

Как видите, я вызываю два простыхметоды (GameObjectHasClicked, Hello) jslib из C #, но

Во-первых, это вызывает ошибку при щелчке игрового объекта в режиме редактора

EntryPointNotFoundException: Hello
SendInfoToBrowserJS.OnMouseDown () (at Assets/Scripts/SendInfoToBrowserJS.cs:29)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32)

Во-вторых, сборка сообщение об ошибке успешно (но без сборки) .На самом деле существует три сообщения:

Первое сообщение об ошибке:

Ошибка запуска "C: / Program Files / Unity2018.2.10 / Редактор / Данные / PlaybackEngines / WebGLSupport \ BuildTools \ Emscripten_Win\ python \ 2.7.5.3_64bit \ python.exe "" C: / Program Files / Unity2018.2.10 / Редактор / Данные / PlaybackEngines / WebGLSupport \ BuildTools \ Emscripten \ emcc "@" D: @TLL_Projects \ WebGLAndBroswerJSInteraction \ Assets .. \Temp \ emcc_arguments.resp "

stdout: stderr: WARNING: root: - отдельный-asm лучше всего работает при компиляции в HTML.В противном случае вы должны сами загрузить файл «.asm.js», который создается отдельно, и сделать это перед загрузкой основного файла «.js».Ошибка [-Wseparate-asm]: сбой при выполнении библиотеки js "D: @TLL_Projects \ WebGLAndBroswerJSInteraction \ Assets \ Plugins \ ExternalJSMethod.jslib": ReferenceError: margeInto не определено ,, ReferenceError: margeInto не определено при вычислении eval (eval (eval)(eval at globalEval (C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js: 105: 8)),: 1: 1) в Object.load (evalв globalEval (C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js: 105: 8),: 178: 9) в JSify (eval в globalEval (C:\ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js: 105: 8),: 84: 20) в D: @TLL_Projects \ WebGLAndBroswerJSInteraction \ Assets \ Plugins \ ExternalJSM.jslib (C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js: 208: 3) в Module._compile (module.js: 570: 32) в Object.Module._extensions..js (module.js: 579:10) в Module.load (module.js: 487: 32) в tryModuleLoad (module.js: 446: 12) в Function.Module._load (module.js: 438: 3) в Module.runMain (модуль.js: 604: 10) предварительно обработанный источник (на этом можно запустить движок js, чтобы иногда получить более четкое сообщение об ошибке): ============= margeInto (LibraryManager.library, {GameObjectHasClicked: function (str) {window.alert (Pointer_stringify (str));}, Hello: function () {window.alert (Pointer_stringify (str));},}); ============= Внутренняя ошибка компилятора в src / compiler.js!Пожалуйста, отправьте отчет об ошибке на https://github.com/kripken/emscripten/issues/ с журналом сборки и входными файлами, которые использовались для запуска.Сообщение об исключении: «ReferenceError: margeInto не определено» |ReferenceError: margeInto не определено
при eval (eval при загрузке (eval при globalEval (C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js: 105:8)),: 1: 1) в Object.load (eval в globalEval (C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js: 105: 8),: 178: 9) в JSify (eval в globalEval (C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js: 105: 8),: 84: 20) на объекте.(C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js: 208: 3) в Module._compile (module.js: 570: 32) в Object.Module._extensions..js (module.js: 579: 10) в Module.load (module.js: 487: 32) в tryModuleLoad (module.js: 446: 12) в Function.Module._load (module.js: 438: 3) в Module.runMain (module.js: 604: 10) Traceback (последний вызов был последним): файл "C: / ProgramФайлы / Unity2018.2.10 / Редактор / Данные / PlaybackEngines / WebGLSupport \ BuildTools \ Emscripten \ emcc ", строка 10, в python_selector.run ( файл , profile = True) Файл" C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ tools \ python_selector.py ", строка 43, в прогоне sys.exit (run_by_import (имя файла, главное), если on_allowed_version (), еще run_by_subprocess (имя файла)) файл" C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ tools \ python_selector.py ", строка 13, в run_by_import возвращает getattr (importlib.import_module (os.path.basename (имя файла)),main) ()
Файл "C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ emcc.py", строка 1611, в запуске final = shared.Building.emscripten (final, append_ext = False, extra_args = extra_args) Файл "C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ tools \ shared.py", строка 2009, в emscripten call_emscripфайл ten (cmdline) "C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ emscripten.py", строка 2340, в _main temp_files.run_and_clean (лямбда-код: main (файл "C:\ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ tools \ tempfiles.py ", строка 93, в run_and_clean, возвращают func () файл" C: \ Program Files \ Unity2018.2.10 \ Editor \ "Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ emscripten.py ", строка 2345, в файле DEBUG = DEBUG, файл" C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ emscripten.epy", строка 2251, в основном файле temp_files = temp_files, DEBUG = DEBUG)" C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ emscripten.py ", строка 99, в клее emscript, forwarded_data = compiler_glue (метаданные, настройки, библиотеки, compiler_engine, temp_files, DEBUG) Файл "C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ emscripten.py ", строка 226, в связке compiler_glue, forwarded_data = compile_settings (compiler_engine, settings, library, temp_files) Файл" C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \crimsemscripten.py ", строка 532, в compile_settings cwd = path_from_root ('src'), error_limit = 300) Файл" C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ tools \ jsrun.py ", строка 132, в run_js вызывает Exception ('Ожидается, что команда' + str (команда) + 'завершится с кодом возврата' + str (assert_returncode) + ', но она вернулась с кодом' + str (proc.returncode)) + 'вместо!Вывод: '+ str (ret) [: error_limit]) Исключение: ожидается команда [' C: / Program Files / Unity2018.2.10 / Editor / Data \ Tools \ nodejs \ node.exe ',' --stack_size = 8192 ', '--max-old-space-size = 4096', 'C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ compiler.js', 'C: \ Users\ User \ AppData \ Local \ Temp \ tmppocs11.txt ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ Audio.js ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ Cursor.js ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ Eval.js ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ FileSystem.js ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ Logging.js ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ Profiler.js ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ SystemInfo.js ',' C: \ ProgramФайлы \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ UnetWebSocket.js ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ Video.js ', 'C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ WebCam.js', 'C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \lib \ WebGL.js ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ lib \ WebRequest.js ',' D: \ @ TLL_Projects \ WebGLAndBroswerJSInteraction \ Assets \ Plugins \ ExternalJS.jslib ',' C: \ Program Files \ Unity2018.2.10 \ Editor \ Data \ PlaybackEngines \ WebGLSupport \ BuildTools \ Emscripten \ src \ library_pthread_stub.js '] завершить с кодом возврата 0, но вместо этого он вернул код 1!Выход: // Объект Module: наш интерфейс с внешним миром.Мы импортируем // и экспортируем значения по нему.Модуль можно использовать различными способами: // 1. Не определено.Мы создаем его здесь // 2. Параметр функции, function (Module) {..генерированный код ..} // 3. добавлен предварительный прогон, var Module = {};..generated UnityEngine.GUIUtility: ProcessEvent (Int32, IntPtr)

Второе сообщение об ошибке

Исключение: сбой при сборке WebGL Player.UnityEditor.WebGL.ProgramUtils.StartProgramChecked (System.Diagnostics.ProcessStartInfo p) (по адресу /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUityE:s.:).WebGlBuildPostprocessor.EmscriptenLink (аргументы BuildPostProcessArgs, логическое значение wasmBuild, System.String sourceFiles, System.String sourceFilesHash) (по адресу /Users/builduser/buildslave/unity/build/PlatformDependent/WebGLityExexWebGL/extenWeb)) UnityEditor.WebGL.WebGlBuildPostprocessor.(BuildPostProcessArgs args) (в /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:937) UnityEditor.Modules.DefaultBuildPostprocessor (rgs args, UnityEditor.BuildProperties & outProperties) (в C: /buildslave/unity/build/Editor/Mono/Modules/DefaultBuildPostprocessor.cs: 27) UnityEditor.PostprocessBuildPlayer.Postprocess (целевой объект, целевая группа, целевая группа.String companyName, System.String productName, Int32 ширина, Int32 высота, параметры BuildOptions, UnityEditor.RuntimeClassRegistry usedClassRegistry, отчет UnityEditor.Build.Reporting.BuildReport) (в C: / buildslave / unity / build / Editor / Mono / BuildPipeline / PostprocessB.cs: 287) UnityEngine.GUIUtility: ProcessEvent (Int32, IntPtr)

И последнее сообщение об успехе

Сборка завершена с результатом «Успешно» UnityEngine.GUIUtility:ProcessEvent (Int32, IntPtr)

1 Ответ

0 голосов
/ 07 февраля 2019

Я внимательно проверяю свою первую ошибку

Не удалось запустить "C: / Program Files / Unity2018.2.10 / Редактор / Данные / PlaybackEngines / WebGLSupport \ BuildTools \ Emscripten_Win \ python \ 2.7.5.3_64bit \python.exe "" C: / Program Files / Unity2018.2.10 / Редактор / Данные / PlaybackEngines / WebGLSupport \ BuildTools \ Emscripten \ emcc "@" D: @TLL_Projects \ WebGLAndBroswerJSInteraction \ Assets .. \ Temp \ emcc_arguments.resp "**

stdout: stderr: WARNING: root: - отдельный-asm лучше всего работает при компиляции в HTML.В противном случае вы должны сами загрузить файл «.asm.js», который создается отдельно, и сделать это перед загрузкой основного файла «.js».Ошибка [-Wseparate-asm]: сбой при выполнении библиотеки js "D: @TLL_Projects \ WebGLAndBroswerJSInteraction \ Assets \ Plugins \ ExternalJSMethod.jslib": ReferenceError: margeInto не определено ,, ReferenceError: margeInto не определено при вычислении eval (eval (eval)(eval at globalEval (C: \ Program. .... 1006 * и т. д.

и обнаружил, что проблема здесь

ReferenceError: margeInto не определено,, ReferenceError: margeInto не определено в eval (eval при загрузке

На самом деле это mergeInto не margeInto, заменяя синтаксическую ошибку i amумеет строить успешно.

...