-
Notifications
You must be signed in to change notification settings - Fork 713
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
改善调试环境,以及修复v8编译 #114
改善调试环境,以及修复v8编译 #114
Conversation
…gnized by IDEs as JavaScript files (for syntax highlighting and debugging), and can be used directly with NodeJS.
…nts to the file on disk and stops at correct lines.
ea56d67
to
1a28b1c
Compare
79a66a3 最好用条件编译宏框住,默认不开启,毕竟不是每个团队都适用。 |
puerts支持的版本是Unity5 ~ 最新版本 |
Commit: 377676b |
…hain builds for arm architecture, which breaks linker step. Will need to add steps for arm specifically in the future so Unity works on the new Macs.
谢谢反馈。 Commit: be597aa
Commit: 6bcd347 Commit: 60a2368 TODO:
|
是否有时间出一个简单的应用demo? |
这个PR含有5个commits。其中 1a28b1c 修复了v8编译中的错误。其余4个commits改善了在Unity中的调试流程。改善包括:
.cjs
文件扩展名,不再需要.js.txt
.cjs
文件被更改后,自动热重载全部JS模块,无需重启Unity Editor(或任何子系统)即可调试更改后的代码修复v8编译
Commit: 1a28b1c
使用问题:Github Actions近期更新了macos-10.15环境。新环境中默认XCode版本被升级为12.2。根据这里的提示,xcode12.2不提供chrominum/v8需要的10.15SDK。编译时会报错。
解决办法:在Github Workflow中设定默认xcode版本为12.0即可。
改善Unity中的调试流程
增加Unity对于
.cjs
文件的支持Commit: ff24112
使用问题:此前Unity中的JS文件都是.js.txt格式。这导致了几个问题:
.txt
文件中设置断点需要额外配置。*.js.txt
文件不匹配,导致VSCode自动开启新的*.js
只读文件。修改代码需要切换窗口,使得开发人员效率降低。.js.txt
文件格式的话,我们需要额外的过程把文件拓展名更改后打包上传到后台。解决办法:添加针对
.cjs
文件的自动导入工具。因为Puerts本身就支持CommonJS格式的模块,所以我选择不支持
.mjs
扩展名。而Unity内嵌了一个导入
.js
文件的工具,以继续支持2017年终止的UnityScript项目,我们无法支持.js
文件格式。改变Unity中CommonJS模块沙盒创建逻辑
Commit: 377676b
require
逻辑调试代码时,我发现VSCode的调试窗口与源文件不同。例如,index.js
文件在调试窗口中显示为
这导致VSCode判定调试文件与源文件不同,所以调试窗口为只读,继而导致调试过程中更改代码需要切换窗口、效率降低。这是参照NodeJS的格式还有VSCode调试工具源代码得出的结论。
然后让
module.js
调用C++函数。C++函数继而导出包装后形成的v8::Function并回调函数。沙盒的参数被回传。这个过程类似于NodeJS的源代码和源代码2。由于我没有Unreal的环境,我并没有更改Unreal的CommonJS模块逻辑。类似的更改应该很容易移植过去,并且可以改善相同的问题。
自动热重载JS模块
Commit: a796d3a 79a66a3
使用问题:调试过程中更改后的代码应该自动加载到正在运行的Unity Editor中。
解决办法:添加global函数
clearModuleCache
,在JsEnv
中增加对应函数,并且在.cjs
文件自动导入时调用其中 79a66a3 可能并不适用于所有的开发团队。请问您有没有任何意见或建议?