From be4cf5fe91b4d49b49eeee196facb9e963ec22d7 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Sun, 20 Jul 2025 20:49:31 +0800 Subject: [PATCH] vault backup: 2025-07-20 20:49:31 --- .../various-complements/histories.json | 2 +- .../Gameplay/PuerTS/Puerts Quick Start.md | 81 ++++++++++++++++++- .../PuerTS/Puerts(一)——学习资料归纳.md | 2 +- .../Images/ImageBag/Puerts/Puerts_UE_D_TS.png | 3 + .../ImageBag/Puerts/Puerts_VSCode_TS.png | 3 + 5 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 08-Assets/Images/ImageBag/Puerts/Puerts_UE_D_TS.png create mode 100644 08-Assets/Images/ImageBag/Puerts/Puerts_VSCode_TS.png diff --git a/.obsidian/plugins/various-complements/histories.json b/.obsidian/plugins/various-complements/histories.json index a797291..c3b47d8 100644 --- a/.obsidian/plugins/various-complements/histories.json +++ b/.obsidian/plugins/various-complements/histories.json @@ -1 +1 @@ -{"DebugView":{"DebugView":{"internalLink":{"count":1,"lastUpdated":1749700323505}}},"XXXXX,之后点击回车。注:XXXXX为模拟器端口号,请参考打开的模拟器问题诊断内展示端口号或MuMu多开器12内的adb端口后再输入。":{"XXXXX,之后点击回车。注:XXXXX为模拟器端口号,请参考打开的模拟器问题诊断内展示端口号或MuMu多开器12内的adb端口后再输入。":{"currentFile":{"count":1,"lastUpdated":1750142832492}}},"\\Users\\loujiajie\\desktop\\log.txt":{"\\Users\\loujiajie\\desktop\\log.txt":{"currentFile":{"count":1,"lastUpdated":1750143148509}}},"相关线程安全变量:":{"相关线程安全变量:":{"currentFile":{"count":1,"lastUpdated":1750853529118}}},"UBodySetup":{"UBodySetup":{"currentFile":{"count":1,"lastUpdated":1750994347070}}},"Android常用命令":{"Android常用命令":{"internalLink":{"count":1,"lastUpdated":1751942017728}}}} \ No newline at end of file +{"相关线程安全变量:":{"相关线程安全变量:":{"currentFile":{"count":1,"lastUpdated":1750853529118}}},"UBodySetup":{"UBodySetup":{"currentFile":{"count":1,"lastUpdated":1750994347070}}},"Android常用命令":{"Android常用命令":{"internalLink":{"count":1,"lastUpdated":1751942017728}}},"issues":{"issues":{"currentFile":{"count":1,"lastUpdated":1752993735430}}}} \ No newline at end of file diff --git a/03-UnrealEngine/Gameplay/PuerTS/Puerts Quick Start.md b/03-UnrealEngine/Gameplay/PuerTS/Puerts Quick Start.md index f4b1ba5..ad1b285 100644 --- a/03-UnrealEngine/Gameplay/PuerTS/Puerts Quick Start.md +++ b/03-UnrealEngine/Gameplay/PuerTS/Puerts Quick Start.md @@ -9,6 +9,83 @@ rating: ⭐ - 官方文档:https://puerts.github.io/docs/puerts/unreal/manual - 调试指南:https://puerts.github.io/docs/puerts/unreal/vscode_debug - 脚本调用引擎API:https://puerts.github.io/docs/puerts/unreal/script_call_uclass - - 更多用法可以参考 + - 更多用法可以参考Puerts Demo https://puerts.github.io/docs/puerts/unreal/demos + - 尤其推荐***QuickStart.ts***:https://github.com/chexiongsheng/puerts_unreal_demo/blob/master/TypeScript/QuickStart.ts + - FAQ https://github.com/Tencent/puerts/blob/master/doc/unreal/zhcn/faq.md +- 哪里可以找到答案: + - https://github.com/Tencent/puerts/issues + - https://github.com/Tencent/puerts/discussions +# QuickStart +## Setup +1. 安装Nodejs v22.17.1。 +2. 通过安装全局typeScrpit模块。 +```bash +npm install -g typescript +``` +3. 安装VSCode插件 +![[Puerts_VSCode_TS.png]] -- \ No newline at end of file +## Puerts Project Setup(跳过) +1. 下载Puerts插件:https://github.com/Tencent/puerts/releases + 1. 可选版本有Nodejs(一般情况下使用这个,可使用NPM添加其他的库)、V8(纯净环境)以及Quickjs(包体小,适合手机) +2. 编译插件。 +3. 进入插件目录`Plugins\Puerts`执行`node enable_puerts_module.js`。 +4. 在项目根目录下执行`npm init`,并且添加。之后重新生成一次VS解决方案并且执行`npm install`。其中Mocha是必须安装的,否则会出现找到编译后的js文件。 +```json +"dependencies": { + "@types/mocha": "^10.0.10" + } + ``` +5. 打开工程,在引擎中点击 ue.d.ts 。 该功能用于生成项目、引擎符号信息,生成之后就能找到相关符号了。如果想在ts文件中调用新增的蓝图&C++方法,也需要点击ue.d.ts才能找到对应符号。可以阅读该文了解详细信息 https://puerts.github.io/docs/puerts/unreal/script_call_uclass +![[Puerts_UE_D_TS.png]] +6. 在`ProjectSettings - Packaging - Additional Not-Asset Directories to Package`中添加`Content/javaScript`。 + +# 调试方法 +具体可以参考: +- Puerts Inspector指南(一)在UE4和Unity里调试Javascript:https://zhuanlan.zhihu.com/p/359598262 + +调试器的选择有: +1. 在Chrome输入`devtools://devtools/bundled/inspector.html?v8only=true&ws=127.0.0.1:8080`。 +2. 在Chrome输入`chrome://inspect`,点击Configure...,输入IP&Port后,点击Inspect。 +3. 使用VSCode进行调试。 + 1. 在`Launch Program`处点击`add Configuration`。 + 2. 选择`Node.js: Attach`。 + 3. 设置端口。 + 4. 点击绿色箭头即可调试。 + +***以下有2种添加调试入口的方式,一般选择第二种,勾选后启动游戏会处于冻结状态,需要调试器(VSCode、Chrome)连上才能继续运行。如果没有设置好调试器,可以打开Config\DefaultPuerts.ini把WaitDebugger改为False来跳过*** +**添加调试入口方式1:自创建虚拟机模式下调试配置** +创建FJsEnv传入调试端口 +```c++ +//8080是调试端口 GameScript = MakeShared(std::make_unique(TEXT("JavaScript")), std::make_shared(), 8080); +``` + +阻塞等待调试器链接 +```c++ +GameScript = MakeShared(std::make_unique(TEXT("JavaScript")), std::make_shared(), 8080); +GameScript->WaitDebugger(); +GameScript->Start("QuickStart", Arguments); +``` + +**添加调试入口方式2:自动绑定模式下调试配置** +1. 菜单上选择`Edit->ProjectSettings`,打开设置页面后在`Plugins -> Puerts Setting`页面中开启调试以及设置端口。 + +# 开发方法 +## 继承引擎类功能 +类似c++的继承式开发方法。 +https://puerts.github.io/docs/puerts/unreal/uclass_extends + +## 蓝图mixin +一般用于给蓝图添加一些TS逻辑。 +https://puerts.github.io/docs/puerts/unreal/mixin + +## 直接运行脚本 +通过在c++对应类中(GameMode、GameInstance等)调用执行脚本的函数来调用指定名称的脚本。 +```c++ +GameScript = MakeShared(std::make_unique(TEXT("JavaScript")), std::make_shared(), 8080); +GameScript->Start("QuickStart", Arguments); +``` + +可以参考:https://github.com/chexiongsheng/puerts_unreal_demo/blob/master/TypeScript/QuickStart.ts· + +# \ No newline at end of file diff --git a/03-UnrealEngine/Gameplay/PuerTS/Puerts(一)——学习资料归纳.md b/03-UnrealEngine/Gameplay/PuerTS/Puerts(一)——学习资料归纳.md index 0670796..5bb161d 100644 --- a/03-UnrealEngine/Gameplay/PuerTS/Puerts(一)——学习资料归纳.md +++ b/03-UnrealEngine/Gameplay/PuerTS/Puerts(一)——学习资料归纳.md @@ -50,7 +50,7 @@ tsc xxx.ts 1. 将对应版本的Puerts放入插件目录。比如puerts_nodejs的`puerts_nodejs\puerts_nodejs\Puerts`直接放到插件目录即可。 2. 编译插件。 3. 进入插件目录`Plugins\Puerts`执行`node enable_puerts_module.js`。 -4. 在项目根目录下执行`npm init`,并且添加。之后重新生成一次VS解决方案并且执行`npm install`。 +4. 在项目根目录下执行`npm init`,并且添加。之后重新生成一次VS解决方案并且执行`npm install`。其中Mocha是必须安装的,否则会出现找到编译后的js文件。 ```json "dependencies": { "@types/react": "^15.6.6", diff --git a/08-Assets/Images/ImageBag/Puerts/Puerts_UE_D_TS.png b/08-Assets/Images/ImageBag/Puerts/Puerts_UE_D_TS.png new file mode 100644 index 0000000..cea764c --- /dev/null +++ b/08-Assets/Images/ImageBag/Puerts/Puerts_UE_D_TS.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630efcca39e0ef7b2a48b44bdc9b02ca2fbfb1a8b51727b2f2d2f39f78abe7fa +size 205696 diff --git a/08-Assets/Images/ImageBag/Puerts/Puerts_VSCode_TS.png b/08-Assets/Images/ImageBag/Puerts/Puerts_VSCode_TS.png new file mode 100644 index 0000000..0351321 --- /dev/null +++ b/08-Assets/Images/ImageBag/Puerts/Puerts_VSCode_TS.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d50a6f342ef012055ecd8101405c9ad8c03eda34c8cff74ec6694d0728ff9822 +size 30764