添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

这是一系列关于在 Unity 中开发 WebGL 项目时处理错误和调试的建议。以下简要总结:

  1. 启用 Full StackTrace: 在 Unity 的 PlayerSettings 的 Other Settings 或 Publish Settings 中的 Enable Exceptions 选项里选择 Full StackTrace,以便在浏览器的 WebGL 中打印出完整的错误调用栈。
  2. 比较变量: 当出现错误时,比较浏览器中传递的变量和编辑器中的变量,查看是否有差异。如果有差异,尝试将浏览器的变量值应用到编辑器中进行测试。
  3. 清空浏览器缓存: 有时错误可能与浏览器缓存有关,适当清空缓存可能有助于解决问题。
  4. 尝试不同浏览器: 有些错误在一个浏览器中可能不够明确,尝试切换到其他浏览器(如谷歌或火狐)可能有助于更好地理解错误。
  5. 解决无关痛痒的错误: 解决编辑器中的无关痛痒的错误,因为它们可能导致浏览器崩溃。
  6. 检查翻墙软件: 翻墙软件可能导致与服务端的资源加载问题,关闭翻墙软件并重新测试。
  7. 系统盘空间: 检查系统盘是否满了,因为这可能导致打包失败。
  8. 仔细查看报错信息: 在浏览器中出现错误时,仔细查看报错信息的前后部分,以获取有用的调试信息。
  9. 清除浏览器缓存: 如果修复了一些 bug 但浏览器看起来没有变化,尝试清除浏览器缓存。
  10. 使用谷歌或火狐浏览器: 无论是手机端还是 PC 端,在出现问题时使用谷歌或火狐浏览器查看报错或警告信息。
  11. 使用 PC 端打包查看报错: 如果在 WebGL 中出现错误,尝试在 PC 端打包成 exe 包,以便更详细地查看报错信息。
  1. RuntimeError: index out of bounds
    这种错误出现,可能是在编辑器里面是 Object reference not set to an instance of an object
    即访问某个空引用。

  2. An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was: SyntaxError: expected expression, got ‘<’
    在我的项目里 这并不是 真的出现了某个符号错误 而是在webgl程序刚加载的时候 就开始接受浏览器或者前端传入的字符 在传入的字符对于一些数据的读取 工作来说 是错误的时候 就会出现这样的报错了 言简意赅就是前端和unity程序交互的时候,传入的某个定好的字段如id是错的。
    第二种原因可能是 新推上去的项目还在更新 还没有更新完成

  3. 有时我们在浏览器运行的时候,可能会遇到一些错误 但是在unity编辑器的时候,不会遇到,这类abort错误可能是空指针异常。像这样的看不明白是什么错的只能自己去排查了
    因为在编辑器都是正常的,没办法直接看。在我的项目中这个问题的出现,我首先用的是夹逼法,将项目推到刚好不会出现这个报错的时候。
    当然这需要每一次选版本都要重新打包,看浏览器是否正常,选择了之后,查看下一个项目和这个项目之间有什么区别,查看代码之后发现没有什么地方会引起这种错误的,只是有个隐藏的bug,但是不足以导致这样的崩溃。
    然后我发现程序有个空url加载的报错,但是这个报错一直无关痛痒,在刚好不会出现上面这个报错的时候,编辑器也有啊, 但是我实在找不到有什么错了,就干脆回到最新的版本将这个解决了,然后解决之后 unity打包选择的是不压缩 因为采用的是夹逼法,所以我选择不压缩的时候打包速度会快很多,并不是因为不压缩能解决这个问题。
    然后最新版打包出来就不会有这个报错了。
    所以有时有一些编辑器的报错要及时解决,虽然短时间内在浏览器和编辑器无关痛痒,但是可能后续改了某些代码之后,在浏览器就出现报错了。
    说白了 那个代码为232的报错是我用unityWebRequest加载某个网络ab包的时候,发了个空地址导致的报错,导致UnityNetWorkError 后面可能在浏览器端导致的是某个空引用,在unity编辑器什么事都没有。

  4. UnityLoder[n]is not a function
    在我的项目里面,这个报错是因为后端服务器是阿里云,阿里云为了让速度快些 就会启用高程度的缓存
    但是缓存程度太高了,导致有时新的内容更新不上去,就会报这个错,清理一下缓存就可以了。

  5. WebGL打包不了 有可能是UI里面设置了两种字体

  6. WebGL打包出来的字体显示不了中文 可能是选择了Arial字体 这个字体在浏览器的WebGL里面是显示不出来中文的

  7. json反序列化报错
    “Newtonsoft.Json.JsonSerializationException unable to find constructor to use for types” error when deserializing class
    这个方法的一个原因是勾选了某个选项导致在没有默认初始化生成一个类的情况下,系统在打包的时候会将这个类的空构造方法取消掉。
    然后JsonConvert.DeserializeObj的时候 会找不到空构造方法 我尝试了在代码里面使用空构造方法new一个 但是打包出来的程序在浏览器端会报下面错误 所以就没有继续了。
    NotSupportedException: System.Reflection.Emit.DynamicMethod
    单纯使用Newtonsoft.json在webgl的浏览器端会有il2cpp的访问问题,这里推荐使用的是JSON .NET For Unity
    可以解决这个问题 或者去官网下载最新的Newtonsoft插件,最新的插件现在到12.0.3左右,在WebGL上面的序列化和反序列化可以正常支持。
    “Newtonsoft.Json.JsonSerializationException unable to find constructor to use for types” error when deserializing class

  8. 浏览器加载不了webgl 报某个错
    可能找了很久发现没有什么地方是错的,原因可能是在编辑器那里已经存在很久了的,觉得无关痛痒的一个报错。
    我这边有个例子就是url为空的报错,解决了之后重新打包就可以进去了,所以有小错误要及时解决。
    还有个要注意的地方就是下面红框里设置为None的话 如果加载过程中出现 错误 会中断加载的过程,没有什么大报错
    将Development Build设置为false 然后将选项设置成下图就行了

  9. Screen position out of view frustum (screen pos 0.000000, 0.000000, 1000.000000) (Camera rect 0 0 0 0)
    我遇见这个问题是在webgl上面, WebGL上面切换切卡的时候,需要把嵌入的U3D程序给屏蔽了,但是没有真正关掉,这种时候如果只是单纯前端切换切卡页面,对U3D嵌入程序什么操作都没有做,每帧都会报上面那个错误, 要及时把Camera.enabled设置为false ,参考网站
    Hidden Unity WebGL App: “Screen position out of view frustum”
    上述解决办法有个很大的弊端:第一种就是需要前端及时与U3D程序内部进行交互,假设U3D加载好之后会向前端访问当前切卡是否关闭, 如果在第一次U3D程序正在加载的时候,切掉,然后又切回来,这时其实已经有两个U3D程序了,只是其中一个看不到,这时第一个加载好之后询问是否已关闭但是没有 则没有设置camera,这时又没有显示,则会报错,新建一个全局字典,对于每个加载的U3D程序作为键,切卡是否已关闭作为值进行存储,当有U3D程序询问的时候,就返回以它为键的值,这种做法因为前端语言的局限性也不是那么好做。
    还有种说法是不要真的把U3D所在的页面切了,只是把点击的切卡的页面新加上去 ,这种做法的弊端就是如果用户多次点击U3D程序所在的切卡则会造成多次加载,太多会导致内存泄漏浏览器崩溃,Application.Quit在WEBGL端又无效
    这里介绍个更加方便的解决办法:如下图
    WEBGL打出来的包有很多函数可供调用,只是之前自己一直以为是前端的所以没注意,
    其中常用的就有onprogress,可以根据里面的加载进度值自定义加载画面,前端与unity交互的SendMessage出自此处,
    当然有些方法是否有效还是要试下,比如SetFullscreen在一些时候就不能全屏 。
    这里用到的是Quit方法,如果程序加载过程中和完成后前端都会有个对象,如果unity程序已经完成了加载,通过这个对象调用Quit会立刻摧毁unity在浏览器的程序,如果程序未加载完成时候调用,程序加载完成后会自个销毁,切卡切换卸载U3D程序是很符合逻辑的,因为切卡换了时候程序还在的话,会比较吃机器,但是这种quit方法并不会真的清理掉程序的内存。

  10. The type name ‘PoseData’ could not be found in the namespace ‘UnityEngine.XR.Tango’ 这个是我将unity升级到2019.3.1f1版本之后出现的,解决办法就是在Window->PackageManager里面降XR的包移出或者升级到最新, 参考网址

  11. 如果WebGL打包不了但是一直查找不到原因,尝试重启unity,如果还不行尝试重启电脑,我试过几次这样的,这可能是unity的bug。

  12. 在谷歌浏览器报错
    VM12 UnityLoader.js:4 GET http://192.168.1.39:8082/static/Build/CPWEBGL.json 404 (Not Found)
    在火狐浏览器报错
    SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON dataUnityLoader.js:4:9722
    onload http://192.168.1.39:8082/static/Build/UnityLoader.js:4
    情况是这样的, 所有前端引用的都是我同一个unity打包的webgl程序,在前端的用户部分能正常访问,前端的商家部分报错找不到这个,其实我和前端约定叫做CPWEBGL,我少放了B,导致商家部分找不到我的文件,但是前端的用户部分能正常访问我也不清楚前端做了什么骚操作,这次经历给的经验就是要注意打的webgl程序的名字。

  13. LinkError:“TellForEndGoToChatNow"import object field is not a Function”,
    WebGL里面这个出错是因为在unity的自定义前端交互函数文件Mktail.jslib里面定义了这个方法如红框但是这个方法里面的绿框框住的某个前端方法没有定义,虽然说函数只是在C#里面定义了这个外部引用函数,一直没到调用时机,但是mktail.jslib里面的方法估计在程序加载时候才进行错误检查,发现前端的GotoCustomChat函数没有定义过,所以不认为TellForEndGoToChatNow是一个方法,所以进行的报错吧

    public class HallProSurGoUI : MonoBehaviour
    #if UNITY_WEBGL
        [DllImport("__Internal")]
        private static extern void TellForEndGoToWangPu();
        [DllImport("__Internal")]
        private static extern void TellForEndGoToChatNow(string sellerId);
    #endif
  14. missing function: canZhanGetWebGLUserId 这个报错出现的原因是在unity的自定义前端交互函数文件Mktail.jslib里面没有定义canZhanGetWebGLUserId 这个方法但是在c#文件里面引用到了这个方法

    [DllImport("__Internal")] private static extern void canZhanGetWebGLUserId (string sellerId);
  15. 如果项目有在WebGL端运行的情况,通常会在Unity工程的Assets下的Plugins文件夹里面有自定义的jslib文件,这个文件里面每个定义的方法后面要有逗号分开,如果有没分开的,可能会导致webgl平台的unity程序生成失败

    mergeInto(LibraryManager.library, {
        //获取产品id
        getProductIdStrFromJSCode: function(){
        	console.log("jslib getProductIdStrFromJSCode " + window.getModelIdFromJSCode());
        	var id = window.getModelIdFromJSCode();
        	var bufferSize = lengthBytesUTF8(id) + 1;
            var buffer = _malloc(bufferSize);
            stringToUTF8(id, buffer, bufferSize);
            return buffer;
    
  16. 和上面的内容类似的,jslib文件里面写到代码要符合javascript即js语法的规则,js是脚本语言,和lua类似,定义方法参数的时候不能够定义类型,如果在WebGL打包失败的时候,报错指定到了jslib所在的内容,例如

    Unexpected identifier,,SyntaxError: Unexpected identifier    at Object.load (eval at globalEval
    reprocessed source (you can run a js engine on this to get a clearer error message sometimes)

    一般是里面的内容不符合js语法的规则,这时可以将jslib里面的代码复制,放到网页上的某个js脚本语法检查网页

  17. Access to XMLHttpRequest at ‘’ from origin ‘https://seller.pre.mktail.cn’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
    这个问题出现的原因是浏览器的同源策略问题,浏览器的同源策略会屏蔽掉一些非同源网站的请求,所以U3D发出的网络请求会被浏览器给阻隔掉
    解决前端跨域:has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header…

  18. 在unity工程的 .jslib文件中,某个函数如果传字符串到外面,会像下图中的红框内部这样定义,这里说明一下,字符串参数为啥要用Pointer_stringfy处理,其实在c#传字符串给js的过程中,jslib里面的 js接收到的是字符串在内存中的地址,既然是地址的话,转换成字符串就需要Pointer_stringfy再处理一下,这样传到外面的才是真的字符串

  19. 关于unity程序结束的方法,目前unity在WebGL上面还不是很成熟,感觉还是有点bug,其中有个比较严重的就,程序在结束之后内存没有清除,这个bug unity官方在2018年中的时候在论坛 Unload Unity gameInstance and release heap memory 上面也承认了,目前的2019年中记录的解决方案参考下面网址
    完全释放Unity WebGL内存
    它的做法是将unity程序嵌套在iframe里面。
    可行性不清楚,我同事试了说不行,但是在这之前找过很多方法了,都是不行的,这里记录一下这种方法的存在。

  20. WebGL打包报错 Unknown format, not a static library!
    我这里是:
    stdout:stderr:ERROR:root:D:\UnityProjects\Company\Assets\Company\ExhibitionHall\Origin\AVProVideo\Plugins\iOS\libAVProVideoiOS.a: Unknown format, not a static library!
    原因是引用了AVPro这个插件,但是里面的ios第三方库libAVProVideoiOS.a设置成了AnyPlatform,导致WebGL打包的时候需要考虑这个库 ,但是识别不了,将识别平台改成ios即可

  21. 对于在jslib里面要获得前端函数的stiring类型的返回值,获得了之后需要有下面四行代码:

    var bufferSize = lengthBytesUTF8(id) + 1;
            var buffer = _malloc(bufferSize);
            stringToUTF8(id, buffer, bufferSize);
            return buffer;

    c#才能接收到字符串

    mergeInto(LibraryManager.library, {
        //获取产品id
        getProductIdStrFromJSCode: function(){
        	console.log("jslib getProductIdStrFromJSCode " + window.getModelIdFromJSCode());
        	var id = window.getModelIdFromJSCode();
        	var bufferSize = lengthBytesUTF8(id) + 1;
            var buffer = _malloc(bufferSize);
            stringToUTF8(id, buffer, bufferSize);
            return buffer;
    
  22. 在WebGL端报错 Scene ‘DesiginSpace’ couldn’t be loaded because it has not been added to the build settings or the asset bundle has not been loaded. To add a scene to the build settings use the menu File->Build Settings ,
    其实我在buildsettings里面是添加了DesiginSpace这个场景的,后来我几次将这个场景的位置调上或者调下都没效,发现场景名和存储场景路径中的某个文件夹名字一样, 就试着将场景名字改了一下,后面加个Scene,然后就可以了,估计是unity的bug。
    StackOverflow也有人遇到了这样的错
    How Do I Load A Assets Bundle
    他的解决办法是重新将场景从build settings里面移出然后再添加进去
    这个bug算是unity的bug了,我在关于unity的bug中也记录过
    Unity 引擎报错集锦
    因为在webgl出来的,其他人可能在webgl也会遇到,所以这里也说一下

  23. unity的一些静态放置的UI在浏览器可能出现异常情况,对于这种问题需要在运行的时候将这种出现异常情况的UI用代码的方式进行设置。

  24. missing function: ZNSt2212basic_stringIcNS_11char_traitsTcEENS_9allocatorIcEEE6initEPKcj这个报错的出现的原因一般是某个第三方库缺少引用或者是双重引用,我这边的情况是我使用了TriLib插件后,导出没问题,但是导出的包运行的时候报这个错误,因为我使用的Trilib插件是阉割版的,它的WebGL的分支不存在,导致在WebGL的时候出现了这个错误。出现这种错误看不见他具体报错内容而是一堆乱码的时候,要想想最近做了什么,最后一个可行的分支版本与出错版本的最显著区别是什么地方,我这次的错误靠的是这个方法猜出来的。
    下图的左边是正常版本的,右边是阉割版本的,可以看出严格版本里面没有WebGL这个分支

  25. 这次遇到的还是关于Trilib插件的问题,在使用trilib1.8.7,并且在导出WebGL包的时候报错 unity版本是2019.3.1f1
    Linking globals named ‘gzgetc’: symbol multiply defined!ERROR:root:Failed to run llvm optimizations:
    参考链接: Unity 2019.1 TriLib WebGL build failed
    链接的陈述大概是 插件里面的库文件对gzgetc的定义和unity的打包的库文件对gzgetc的定义重复了
    我没有按照链接里面的做,将trilib版本从1.8.7升级到了1.9.0,它里面的内容也变了
    这次打包的时候就不报错了。

  26. Failed running “E:/AllUnity/2019.3.1f1/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten_Win\python\2.7.5.3_64bit\python.exe” -E “E:/AllUnity/2019.3.1f1/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten\emcc” @“D:\UnityProjects\Company\Assets…\Temp\emcc_arguments.resp”
    stdout:
    stderr⚠️ unresolved symbol: FullScrnForEndClickERROR:root:‘E:/AllUnity/2019.3.1f1/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten_FastComp_Win\binaryen\bin\asm2wasm D:\UnityProjects\Company\Temp\StagingArea\Data\linkresult_wasm\build.temp.asm.js –total-memory=33554432 –trap-mode=clamp -O3 –mem-init=D:\UnityProjects\Company\Temp\StagingArea\Data\linkresult_wasm\build.js.mem –mem-base=1024 –wasm-only –symbolmap=D:\UnityProjects\Company\Temp\StagingArea\Data\linkresult_wasm\build.js.symbols -o D:\UnityProjects\Company\Temp\StagingArea\Data\linkresult_wasm\build.wasm’ failed
    UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
    这个报错是在打包时候报的错,仔细看内容,在里面有段话 stderr⚠️ unresolved symbol: FullScrnForEndClick 这个是关键的,
    在我的工程里面,这个报错的原因是在jslib文件里面没有定义 FullScrnForEndClick 这个方法,但是在c#文件里面有引用到

    #if UNITY_WEBGL
        [DllImport("__Internal")]
        private static extern void ForEndFullScrn();
        [DllImport("__Internal")]
        private static extern void FullScrnForEndClick();
    #endif

    所以把引用的去掉就可以了 ,或者在jslib里面定义这个方法。

  27. unity打包的时候如果设置了broti或者gzip这种压缩方式,则打包出来的程序放到服务器的时候,服务器需要设置相对应的解压方式,否则运行的时候会报错,ReferenceError:Cant find variable: UnityFramework

  28. ERR_HTTP2_PROTOCOL_ERROR

    Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR

    听说是http2的关系。淘宝客服说可以关闭掉

  29. 会出现加载很久的情况,给出的提示是:
    `You can reduce startup time if you configure your web server to
    add “Content-Encoding: gzip” response header when serving “Build/WebAR-WebGLTest.wasm.unityweb” file.

  30. AudioContext was not allowed to start`

    The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.

    带有音频的视频或者其他元素,在WebGL的移动端或者PC端都需要用户输入响应。PC端是通过鼠标点击,移动端是通过手指触控做到用户输入响应。

  31. il2cpp.exe did not run properly

    Exception:
     C:\Program Files\Unity\Hub\Editor\2019.4.36f1c1\Editor\Data\il2cpp/build/deploy/net471/il2cpp.exe 
    did not run properly!

    环境变量或者硬盘命名或者我的文档或者打包路径中有中文名称。

  32. 一些粒子系统在WebGL下的表现可能不尽如人意,这是Unity对WebGL的兼容测试较少的原因。在更改参数测试了几次都没有效果的情况下,最好是用其他方法代替粒子系统,参考网址 Unity particles not showing on WebGL

  33. null function or function signature mismatch

    RangeError:Maximum call stack size exceeded. null function or function signature mismatch

    我在服务器疯狂从回收站还原删除 再删除再还原 在谷歌浏览器就出现这些报错。
    重启阿里云服务器不行 清楚手机浏览器缓存就可以了。但是微信浏览器不能清楚缓存,因为找不到这个选项按钮入口。

  34. exception thrown: RuntimeError: unreachable,RuntimeError: unreachable这其实对应了开发中最最常见的报错NullReference。所以某个地方出现了这个报错之后,最好还是到程序中根据对应的流程去复现这个报错。

  35. Failed to fetchat instantiateAsync

    TypeError: Failed to fetchat instantiateAsync (blob:https://www.wenginning.love/e2d10002-ac06-49e3-912d-5blf12alcb4d:3:18419)
    at createWasm (blob:https://www.wenginning.love/e2d10002-ac06-49e3-912d-5blf12alcb4d:3:19029)
    at Array.unityFramework (blob:https://www.wenginning.love/e2d10002ac06-49e3-912d-5blf12alcb4d:3:304158at https://www.wenqinning.love/WebAR/Build/4.8.10.24.loader.js:l:6595

    我的出现原因是WebGl程序在加载过程中出现了wifi断开导致的。是wifi自己断开的原因。

  36. 谷歌浏览器报错
    Get https://www.wenqinning.love/WebAR/Build/4.19.13.56.data 404 (Not Found)
    这是放在服务器程序丢失了或者找不到造成的。

  37. KeyNotFoundException

    KeyNotFoundException: The given key"开始页船3 was not present in the dictionary.
    在浏览器里面清除缓存即可。

  38. build.js failed with output

    Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output:
    Traceback (most recent call last):
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emcc2.py", line 3571, in <module>
        sys.exit(main(sys.argv))
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emcc2.py", line 3564, in main
        ret = run(args)
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emcc2.py", line 1082, in run
        phase_post_link(options, wasm_target, wasm_target, target)
      File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\contextlib.py", line 74, in inner
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emcc2.py", line 2400, in phase_post_link
        phase_emscript(options, in_wasm, wasm_target, memfile)
      File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\contextlib.py", line 74, in inner
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emcc2.py", line 2428, in phase_emscript
        emscripten.run(in_wasm, wasm_target, final_js, memfile)
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emscripten.py", line 830, in run
        emscript(in_wasm, out_wasm, outfile_js, memfile, shared.DEBUG)
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emscripten.py", line 308, in emscript
        glue, forwarded_data = compile_settings()
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emscripten.py", line 178, in compile_settings
        cwd=path_from_root('src'), env=env)
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\tools\shared.py", line 216, in run_js_tool
        return check_call(command, *args, **kw).stdout
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\tools\shared.py", line 202, in check_call
        return run_process(cmd, *args, **kw)
      File "C:\Program Files\Unity\Hub\Editor\2021.3.8f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\tools\shared.py", line 97, in run_process
        ret = subprocess.run(cmd, check=check, input=input, *args, **kw)
      File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\subprocess.py", line 474, in run
      File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\subprocess.py", line 926, in communicate
    UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 393654: illegal multibyte sequence
    UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

    在打包的时候,jslib里面不能够有中文。注释也是不行的。否则就会报这个错。

  39. WebGL打包的时候只有
    这是因为index.html与实际加载的文件名字不一样。
    在打包的时候文件夹名字与index里面的一致即可。

  40. 404 Not Found
    这类似于服务器加载程序的时候找不到要加载的js文件。

    Failed to load resource: the server responded with a status of 404 (Not Found)

    然后是加载完成后报的这个错。

    mp\_test.loader.js:1 Uncaught (in promise) RangeError: Offset is outside the bounds of the DataView  
    at DataView.getUint32 ()
  41. 这种报错出现的原因是Unity中index.html的修改没有完成导致的,路径修改不对
    GET https://hssczl.gd-txhn.com/WebGLPackages/5.10.17.29/temp\_test/Build/temp\_test.loader.js net::ERR\_ABORTED 404 (Not Found)
    需要修改成
    即把路径改成到Build之前的每个//之间的都用…代替。

  42. webgl打包报错一般是因为cs里面调用到了js的方法,但是这个jslib已经被删除了