[{"content":" 先说结论，关闭了XMP解决了Unity构建WebGL失败的问题，但我没有理解原因。\n昨晚尝试在公司的电脑上使用Unity 6000.0.40f1 上构建一个WebGL应用失败。\n出现错误\n1 2 3 4 5 C:\\Users\\***\\UnityProject\\***\u0026gt;set MYDIR=C:\\Program Files\\Unity\\Hub\\Editor\\6000.0.40f1\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\Emscripten\\emscripten\\ C:\\Users\\***\\UnityProject\\***\u0026gt;goto FOUND_MYDIR emcc: error: \u0026#39;\u0026#34;C:/Program Files/Unity/Hub/Editor/6000.0.40f1/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/binaryen\\bin\\wasm-opt\u0026#34; --strip-dwarf --signext-lowering --post-emscripten -O2 --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --strip-debug --strip-producers Library/Bee/artifacts/WebGL/build/debug_WebGL_wasm/build.wasm -o Library/Bee/artifacts/WebGL/build/debug_WebGL_wasm/build.wasm --mvp-features --enable-mutable-globals --enable-sign-ext\u0026#39; failed (returned 3221225477) UnityEditor. EditorApplication:Internal_CallDelayFunctions () 很奇怪，记得之前是可以正常构建WebGL app的。\n不想思考，将报错信息交给ChatGPT。\n根据ai反馈的可能原因逐一进行排查。\n删除缓存重试\n删除项目下Library目录整体，重启Unity重新生成，没用。\n杀毒软件防护/干扰\n这点排除，我的工作电脑只有windows defender。\n重装 WebGL Support Build\n这个我不想试，众所周知，UnityHub删除某一个组件非常麻烦， 并且之前可以正常工作，这个问题可能性不高，先排除。\n重装修复VC++库\nvc库很全，并且之前可以正常工作，这个问题可能性不高，先排除。\nCPU/内存不稳定\n诶呦，这个有意思。\n虽然我不是13/14代酷睿，但和巧合的是，在出现这个问题前，我确实在BIOS中开启了自动XMP。\n我的工作电脑出现了问题，做了一点简单的处理。修复之后，我进行了被恢复到默认的BIOS设置，在重新开启了处理器虚拟化之后，我顺手打开了XMP。\n这下好了，难道是我开启XMP导致的？\n直接重启电脑尝试处理，在BIOS中关闭XMP（顺便一提，这老华硕主板BIOS做的不错，XMP不用进高级选项就可以设置，开启就可以自动设置频率、电压等），保存，重启。\n重新启动Unity，直接点击构建。\n五分钟后\u0026hellip;\n成了！\n我不懂但我大受震撼.png\n就这样吧，没察觉到关掉或开启XMP对我的开发的影响，就这样一直关着吧，等我有机会了解“真相”再说吧😂。\n","permalink":"https://ubug.cc/posts/tech/unitybuildwebglappfailissuefix/","summary":"\u003cblockquote\u003e\n\u003cp\u003e先说结论，关闭了XMP解决了Unity构建WebGL失败的问题，但我没有理解原因。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e昨晚尝试在公司的电脑上使用Unity 6000.0.40f1 上构建一个WebGL应用失败。\u003c/p\u003e\n\u003cp\u003e出现错误\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e2\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e3\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e4\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e5\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eC:\\Users\\***\\UnityProject\\***\u0026gt;set MYDIR=C:\\Program Files\\Unity\\Hub\\Editor\\6000.0.40f1\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\Emscripten\\emscripten\\ \n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eC:\\Users\\***\\UnityProject\\***\u0026gt;goto FOUND_MYDIR emcc: error: \u0026#39;\u0026#34;C:/Program Files/Unity/Hub/Editor/6000.0.40f1/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/binaryen\\bin\\wasm-opt\u0026#34; --strip-dwarf --signext-lowering --post-emscripten -O2 --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --strip-debug --strip-producers Library/Bee/artifacts/WebGL/build/debug_WebGL_wasm/build.wasm -o Library/Bee/artifacts/WebGL/build/debug_WebGL_wasm/build.wasm --mvp-features --enable-mutable-globals --enable-sign-ext\u0026#39; failed (returned 3221225477) UnityEditor.\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eEditorApplication:Internal_CallDelayFunctions ()\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cp\u003e很奇怪，记得之前是可以正常构建WebGL app的。\u003c/p\u003e\n\u003cp\u003e不想思考，将报错信息交给ChatGPT。\u003c/p\u003e\n\u003cp\u003e根据ai反馈的可能原因逐一进行排查。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e删除缓存重试\u003c/p\u003e\n\u003cp\u003e删除项目下Library目录整体，重启Unity重新生成，没用。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e杀毒软件防护/干扰\u003c/p\u003e\n\u003cp\u003e这点排除，我的工作电脑只有windows defender。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e重装 WebGL Support Build\u003c/p\u003e","title":"奇怪的修复 Unity WebGL 打包失败方法"},{"content":"这两天重新捡起了尘白禁区玩，并且下载了安卓手机端。\n正好赶上了新版本，没忍住拿下了芬妮新皮。然后就发现我的手机国服忘记修改“小开关”，难受了，手机上并没有修改文本文件的程序，故使用adb修改设备上的文本文件。\n先简单明确一下需求吧，首先我的手边只有我的MacBook，并且没有连接她与我的手机的数据线，可以考虑使用wifi连接adb。\n同时，尘白禁区的“小开关”只需要修改指定位置的一个txt文本文件的内容就可以。\n貌似可行，开干。\n提醒：这篇内容非常入门，且严格意义上不算修改。\n安装ADB MacOS\n系统中已经安装了Brew，安装ADB非常方便，执行\n1 brew install android-platform-tools 等待安装结束即可。\nWindows\n具体操作请自行搜索，大概的思路是下载、解压到合适位置、自行决定是否设置环境变量。\n在官网下载最新版压缩包。\n解压到C:\\User\\用户名\\AppData\\Local\\Programs\\platform_tools，拿这个位置举例。\n将刚才的路径添加到系统环境变量Path中。\n在 PowerShell 中执行 adb --version，验证是否成功，出现了adb版本、安装路径等即为成功。\nLinux 发行版\n使用Linux发行版的用户，就不用我这种入门级别的文章了吧😂。\n连接设备 打开手机开发者模式：我的是 Xiaomi HyperOS 1.0 系统，进入 设置-\u0026gt;我的设备-\u0026gt;全部参数与信息，多次点击OS版本选项，即可开启开发者模式。其他Android系统方法类似。\n打开无线调试：进入 设置-\u0026gt;更多设置开发者选项无线调试，打开无线调试开关。\n配对：手机点击 使用配对码配对设备。在电脑终端中执行 adb pair IP:Port，执行后，输入手机上的六位配对码即可配对。\n⚠️注意，电脑与手机必须处于同一网络下，配对IP与配对端口显示在点击 使用配对码配对设备 后的弹窗里。(配对成功后，手机已配对的设备中会多出一个设备选项)\n连接：电脑终端执行adb connect IP:Port连接手机。执行adb devices即可查看所有设备。\n文件操作 确定一下目标文件位置，经过查找，发现路径在\n/sdcard/Android/data/com.dragonli.projectsnow.lhm/files/localization.txt。\n可以终端执行\nadb shell cat /sdcard/Android/data/com.dragonli.projectsnow.lhm/files/localization.txt\n查看文件内容，内容应该为\nlocalization = 0，\n我们的目标就是将0改为1。\n下载文件\n大概率，这个文件没有权限直接修改，所以将文件下载至本机，修改后再推送回设备覆盖。\nadb 的 pull 命令可以从安卓设备下载文件到本机。\n使用adb pull /sdcard/Android/data/com.dragonli.projectsnow.lhm/files/localization.txt ~/Desktop将安卓设备上 的文件拉取到电脑上，这里是下载到了桌面路径。\n修改文件\n文本文件下载到本机，修改就很容易了，使用可视化的文本编辑器/终端工具都可以。修改文本内容中的0为1。\n推送文件\n将修改后的文本文件推送回原位置就可以了。\nadb 的 push 命令可以将本机设备推送到安卓设备上。\n使用adb push ~/Desktop/localization.txt /sdcard/Android/data/com.dragonli.projectsnow.lhm/files/覆盖原文件即可。 注意，在我的设备上没有出现无法覆盖，位置没有权限的情况，如果你的设备出现了类似问题导致文件覆盖失败，可以考虑推送到/sdcard/，再通过安卓设备上的文件管理应用操作，将文本移动到目标位置，难度降低。\n验证结果\n使用安卓设备上的相关应用查看文本内容正常。\n启动游戏，就可以发现“小开关”生效了。\n成功🎉\n","permalink":"https://ubug.cc/posts/tech/adbmodifyandroiddevicefile/","summary":"\u003cp\u003e这两天重新捡起了尘白禁区玩，并且下载了安卓手机端。\u003c/p\u003e\n\u003cp\u003e正好赶上了新版本，没忍住拿下了芬妮新皮。然后就发现我的手机国服忘记修改“小开关”，难受了，手机上并没有修改文本文件的程序，故使用adb修改设备上的文本文件。\u003c/p\u003e\n\u003cp\u003e先简单明确一下需求吧，首先我的手边只有我的MacBook，并且没有连接她与我的手机的数据线，可以考虑使用wifi连接adb。\u003c/p\u003e\n\u003cp\u003e同时，尘白禁区的“小开关”只需要修改指定位置的一个txt文本文件的内容就可以。\u003c/p\u003e\n\u003cp\u003e貌似可行，开干。\u003c/p\u003e\n\u003cp\u003e提醒：这篇内容非常入门，且严格意义上不算修改。\u003c/p\u003e\n\u003ch3 id=\"安装adb\"\u003e安装ADB\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMacOS\u003c/p\u003e\n\u003cp\u003e系统中已经安装了Brew，安装ADB非常方便，执行\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-gdscript3\" data-lang=\"gdscript3\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebrew install android\u003cspan style=\"color:#f92672\"\u003e-\u003c/span\u003eplatform\u003cspan style=\"color:#f92672\"\u003e-\u003c/span\u003etools\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cp\u003e等待安装结束即可。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWindows\u003c/p\u003e\n\u003cp\u003e具体操作请自行搜索，大概的思路是下载、解压到合适位置、自行决定是否设置环境变量。\u003c/p\u003e\n\u003cp\u003e在\u003ca href=\"https://developer.android.com/tools/releases/platform-tools?hl=zh-cn\"\u003e官网\u003c/a\u003e下载最新版压缩包。\u003c/p\u003e\n\u003cp\u003e解压到\u003ccode\u003eC:\\User\\用户名\\AppData\\Local\\Programs\\platform_tools\u003c/code\u003e，拿这个位置举例。\u003c/p\u003e\n\u003cp\u003e将刚才的路径添加到系统环境变量Path中。\u003c/p\u003e\n\u003cp\u003e在 PowerShell 中执行 \u003ccode\u003eadb --version\u003c/code\u003e，验证是否成功，出现了adb版本、安装路径等即为成功。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLinux 发行版\u003c/p\u003e\n\u003cp\u003e使用Linux发行版的用户，就不用我这种入门级别的文章了吧😂。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"连接设备\"\u003e连接设备\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e打开手机开发者模式：我的是 Xiaomi HyperOS 1.0 系统，进入 设置-\u0026gt;我的设备-\u0026gt;全部参数与信息，多次点击OS版本选项，即可开启开发者模式。其他Android系统方法类似。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e打开无线调试：进入 设置-\u0026gt;更多设置开发者选项无线调试，打开无线调试开关。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e配对：手机点击 使用配对码配对设备。在电脑终端中执行 \u003ccode\u003eadb pair IP:Port\u003c/code\u003e，执行后，输入手机上的六位配对码即可配对。\u003c/p\u003e\n\u003cp\u003e⚠️注意，电脑与手机必须处于同一网络下，配对IP与配对端口显示在点击 使用配对码配对设备 后的弹窗里。(配对成功后，手机已配对的设备中会多出一个设备选项)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e连接：电脑终端执行\u003ccode\u003eadb connect IP:Port\u003c/code\u003e连接手机。执行\u003ccode\u003eadb devices\u003c/code\u003e即可查看所有设备。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"文件操作\"\u003e文件操作\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e确定一下目标文件位置，经过查找，发现路径在\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e/sdcard/Android/data/com.dragonli.projectsnow.lhm/files/localization.txt\u003c/code\u003e。\u003c/p\u003e\n\u003cp\u003e可以终端执行\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eadb shell cat /sdcard/Android/data/com.dragonli.projectsnow.lhm/files/localization.txt\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e查看文件内容，内容应该为\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003elocalization = 0\u003c/code\u003e，\u003c/p\u003e\n\u003cp\u003e我们的目标就是将0改为1。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e下载文件\u003c/p\u003e\n\u003cp\u003e大概率，这个文件没有权限直接修改，所以将文件下载至本机，修改后再推送回设备覆盖。\u003c/p\u003e\n\u003cp\u003eadb 的 pull 命令可以从安卓设备下载文件到本机。\u003c/p\u003e","title":"使用 ADB 修改安卓设备上的文件"},{"content":"背景 在 Windows 平台，使用 Unity Hub 3.5.0 给已经安装的 Unity Editor 2022.3.63f1 添加 Android 模块后，此版本编辑器不存在 JDK SDK 与 NDK。\n在资源管理器中验证，确实此版本路径下的Data/PlaybackEngines/AndroidPlayer/下不存在SDK、NDK、OpenJDK这个几个目录。\n原因猜测 安装时，网络质量不好，多次出现下载失败，也点击了多次重试。 Android Build Support被安装时，可能有路径下覆盖的行为，导致更显解压出的OpenJDK、SDK、NDK文件被覆盖。\n出现这个情况后，尝试在Unity官网下载对应编辑器版本的Android Build Support离线安装exe包进行安装，也没有解决（这个包可能根本就不包含OpenJDK、SDK和NDK）。\n解决方案 使用 Unity Hub 给某一个版本的 Unity Editor 添加安卓模块/负载时，建议只勾选 Android Build Support 选项并安装，等待安装结束后，再勾选添加 OpenJDK 与 Android SDK \u0026amp; NDK Tools 选项安装。\n后续 翻阅 Unitt Hub 发布说明，这个问题应该在下一个版本 3.5.1 就被修复，未验证，但我的其他设备一直在用最新版的 Unity Hub 没出现过这个问题。 看错了。\n","permalink":"https://ubug.cc/posts/tech/unityeditoraddandroidmodule/","summary":"\u003ch3 id=\"背景\"\u003e背景\u003c/h3\u003e\n\u003cp\u003e在 Windows 平台，使用 Unity Hub 3.5.0 给已经安装的 Unity Editor 2022.3.63f1 添加 Android 模块后，此版本编辑器不存在 JDK SDK 与 NDK。\u003c/p\u003e\n\u003cp\u003e在资源管理器中验证，确实此版本路径下的\u003ccode\u003eData/PlaybackEngines/AndroidPlayer/\u003c/code\u003e下不存在SDK、NDK、OpenJDK这个几个目录。\u003c/p\u003e\n\u003ch3 id=\"原因猜测\"\u003e原因猜测\u003c/h3\u003e\n\u003cp\u003e安装时，网络质量不好，多次出现下载失败，也点击了多次重试。\nAndroid Build Support被安装时，可能有路径下覆盖的行为，导致更显解压出的OpenJDK、SDK、NDK文件被覆盖。\u003c/p\u003e\n\u003cp\u003e出现这个情况后，尝试在Unity官网下载对应编辑器版本的Android Build Support离线安装exe包进行安装，也没有解决（这个包可能根本就不包含OpenJDK、SDK和NDK）。\u003c/p\u003e\n\u003ch3 id=\"解决方案\"\u003e解决方案\u003c/h3\u003e\n\u003cp\u003e使用 Unity Hub 给某一个版本的 Unity Editor 添加安卓模块/负载时，建议只勾选 Android Build Support 选项并安装，等待安装结束后，再勾选添加 OpenJDK 与 Android SDK \u0026amp; NDK Tools 选项安装。\u003c/p\u003e\n\u003ch3 id=\"后续\"\u003e后续\u003c/h3\u003e\n\u003cp\u003e\u003cdel\u003e翻阅 Unitt Hub 发布说明，这个问题应该在下一个版本 3.5.1 就被修复，未验证，但我的其他设备一直在用最新版的 Unity Hub 没出现过这个问题。\u003c/del\u003e 看错了。\u003c/p\u003e","title":"Unity 编辑器添加安卓模块无法找到 JDK SDK NDK 问题"},{"content":"","permalink":"https://ubug.cc/aboutme/","summary":"","title":"关于我"}]