PuerTS在UE中的使用
一、PuerTS简介
PuerTS是腾讯出品的一个游戏引擎下的TypeScript编程解决方案。本质是:
-
在(UE)引擎提供了JavaScript虚拟机环境
-
让TypeScript/JavaScript能够和引擎交互,或者说能调用C++或者蓝图API,也能被C++或者蓝图调用到
二、PuerTS的安装
1. 创建工程
- 使用 UE4.25及以上版本(包含UE5.1) 或 UE4.24及以下版本 创建c++工程
- 若为纯蓝图工程会提示 “Plugin ‘Puerts’ failed to load because module ‘JsEnv’ could not be found.”
纯蓝图工程不会自动编译Plugins,而Puerts目前的源码或者发布包内,都是C++源码。
可以clone puerts的demo或者使用其他c++工程,在vs编译工程后拷贝到纯蓝图工程。
2. 插件下载
- 下载: https://github.com/Tencent/puerts
- 拷贝puerts/unreal下的Puerts目录到您项目的Plugins目录下
3. V8引擎下载
- UE4.25及以上版本: V8_8.4.371.19_0323
- UE4.24及以下版本: V8 for ue 4.24 or below
- 解压到Project/Plugins/Puerts/ThirdParty
4. 配置Puerts插件
- 使用 cmd 或 powershell
- 在目录 Project/Plugins/Puerts/ 下,执行如下命令
node enable_puerts_module.js
- 该命令作用
- 拷贝 Project/Plugins/Puerts/Content/Javescript 文件夹 至 Project/Content/
- 创建并初始化 Project/tsconfig.json 文件(内容源自enable_puerts_module.js)
- 创建并初始化 Project/Config/DefaultPuerts.ini 文件(内容:AutoModeEnable=True)
- 创建 Project/TypeScript 目录
- npm 安装 Puerts_Editor 的依赖包
- 该命令作用
- 在 Project 目录下执行如下命令
npm init
- 该命令作用
- 生成 package.json 文件
- 在 package.json 文件中加入如下内容
"dependencies": { "@types/react": "^15.6.6", "@types/react-reconciler": "^0.18.0", "@types/mocha": "^7.0.1" }
- 该命令作用
- 在 Project 目录下执行如下命令
npm install
- 该命令作用
- 下载安装所需模块
- 模块位置: Project/node_modules
- 该命令作用
5. 配置ReactUMG插件
- 在 Project/Content/JavaScript 执行如下命令
npm init
- 该命令作用
- 生成 package.json 文件
- 在 package.json 文件中加入如下内容
"dependencies": { "react": "^16.11.0", "react-reconciler": "^0.23.0" }
- 该命令作用
- 在相同目录下在执行如下命令
npm install
- 该命令作用
- 下载安装所需模块
- 模块位置: Project/Content/JavaScript/node_modules
- 该命令作用
- 打开 Project/tsconfig.json 文件,在 “typeRoots” 加入
"Plugins/ReactUMG/Typing"
三、测试PuerTS是否正确安装及配置
-
重新生成vs解决方案,并编译
- 必须将对应版本的V8引擎拷贝至插件下,否则编译失败
- ***编译时保证无其他包含Puerts工程在运行,否则Puerts下若干模块无法正确生成,导致连接错误,编译失败
-
打开UE工程,在引擎工具栏中点击 ue.d.ts 按钮,将在Puerts、ReactUMG插件目录下创建Typing文件夹,并生成可直接被TS调用的UE反射属性和方法的库文件
-
或者,也可以通过控制台命令生成声明文件:
Puerts.Gen
-
Puerts.Gen
默认仅生成UCLASS及被UCLASS引用的USTRUCT,UENUM -
如果希望增加未引用的USTRUCT,执行
Puerts.Gen STRUCT
-
如果希望增加未引用的UENUM,执行
Puerts.Gen ENUM
-
如果希望增加未引用的USTRUCT、UENUM,执行
Puerts.Gen ALL
-
-
若生成成功则表示 PuerTS 已正确安装及配置