This commit is contained in:
2025-08-02 12:09:34 +08:00
commit e70b01cdca
2785 changed files with 575579 additions and 0 deletions

View File

@@ -0,0 +1,96 @@
---
title: 未命名
date: 2025-07-20 11:39:10
excerpt:
tags:
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]]
## 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 InspectorUE4UnityJavascript: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. 绿
***2VSCodeChromeConfig\DefaultPuerts.iniWaitDebuggerFalse***
**1**
FJsEnv
```c++
//8080是调试端口 GameScript = MakeShared<puerts::FJsEnv>(std::make_unique<puerts::DefaultJSModuleLoader>(TEXT("JavaScript")), std::make_shared<puerts::FDefaultLogger>(), 8080);
```
阻塞等待调试器链接
```c++
GameScript = MakeShared<puerts::FJsEnv>(std::make_unique<puerts::DefaultJSModuleLoader>(TEXT("JavaScript")), std::make_shared<puerts::FDefaultLogger>(), 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<puerts::FJsEnv>(std::make_unique<puerts::DefaultJSModuleLoader>(TEXT("JavaScript")), std::make_shared<puerts::FDefaultLogger>(), 8080);
GameScript->Start("QuickStart", Arguments);
```
可以参考:https://github.com/chexiongsheng/puerts_unreal_demo/blob/master/TypeScript/QuickStart.ts·
# NEPY的问题
NEPY插件有好几个痛点
1. 通过自动生成C++代码进行符号导出所以每次使用脚本调用新的引擎类都会产生c++编译我支援的项目中每次都会产生1000+的编译任务,相当影响团队的开发效率。
2. Python是弱类型语言编码时容易写出bug或者卡壳。
3. NEPY针对蓝图的支持比较糟糕Puerts提供了mix蓝图方案。
4. NEPY的资料太少遇到问题大概率只能自己解决。Puerts的资料相对较多有bug或者问题都可以在github向作者提问。