UE5 + Rider + VsCode 接入腾讯的 Puerts 脚本

学习了一段时间 U++,写点啥就得等编译,体验真的是一言难尽。。。。。。

然后就想着给自己找个脚本好了,调研了一下 AngelScript,puerts 的可行性。

AngelScript 看着真的诱人,但是发现连官方提供的都是 UE 的预编译版本,没有讲解自己该怎么往引擎里一步一步的接入,感觉2眼1摸黑的感觉,官方说这样也无法支持一些2进制插件了。

Puerts 就还好,它是以 UE 插件的形态存在,企鹅家大业大,更新的也很及时,然后就选择先接入它试试看了~

首先从下面这个地址里去下最新版本的安装包,当前最新的是 Unreal_v1.0.8

https://github.com/Tencent/puerts/releases

具体下哪个版本就不赘述了,看官方文档即可。

下面来讲具体步骤,这也是我不喜欢 UE 的点,很多操作都对步骤顺序有要求,换一下顺序可能就会引发新的问题。

1,在电脑上安装好 node.js,并打开 UE 编辑器创建一个 C++ 的桌面项目。

2,编译项目(我的源码引擎,新建 C++ 项目后不会自动编译,需要手动来一下)

3,关闭 rider 和 ue 编辑器

4,拷贝 puerts 插件

一般是下面这个样子的,还要检查 ThirdParty 目录

如果没有 v8 引擎目录的话,要根据文档将 v8 或你想要的后端拷贝进来,要把文件夹名字修改为 v8,这一点很重要,因为程序里是按 v8 这个名字找的,不是的话,编译是无法通过的,官方给的包里都没有写对。

5,右键项目文件,重新生成一下 .sln 文件。

6,双击 .sln 打开项目,进入到设置中,在 构建,执行,部署 -> 工具和构建 中,把 .NET CLI 可执行文件路径 修改为引擎下的 .NET(下拉菜单中直接有),这里应该是 rider 的一个 bug,它默认找最新的,但是我们无法用最新的来进行编译。

7,打开项目的 .Build.cs 文件,添加2个依赖,"Puerts", "JsEnv",虽然我们暂时用不上,但后面也要加,这里顺手搞了。

8,右键项目,重新构建一下它。

9,让我们回到插件的主目录去,就是有 enable_puerts_module.js 的地方,对我们就是要执行它了。

从该目录启动一个 cmd 窗口,执行命令

bash 复制代码
node enable_puerts_module.js

它会做很多事,创建一些配置文件和目录出来。

11,打开 ue 项目,点击一下 puerts 的这个按钮(我最开始时以为只是1个logo而已,真的没想到它还能点)。

它会往 Typing 目录生成 ue.d.ts,ue_bp.d.ts 这样的 api 反射文件。

12,打开 ue 项目的同时,用 vscode 打开项目的根目录

在终端里找到配置任务,会在项目目录产生一个 .vscode 目录,和一个 tasks.json 文件,它就是那个所谓的任务。

按如下配置。

bash 复制代码
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "typescript",
			"label": "tsc: watch - tsconfig.json",
			"group": "build",
			"tsconfig": "tsconfig.json",
			"option": "watch",
			"problemMatcher": [
				"$tsc-watch"
			],
		}
	]
}

到这里,配置的工作基本上就完成了,可以来测试一下管不管用了。

13,在 TypeScript 目录下创建一个 TS_Player.ts 文件。

填写如下代码

TypeScript 复制代码
import * as UE from "ue";

class TS_Player extends UE.Character {
    ReceiveBeginPlay(): void {
        console.log("----------------------------hello,world 123");
    }
}

export default TS_Player;

还记得之前我们创建的那个任务吗?通过终端菜单,执行一下它。

它会把我们写的 .ts 编译成 .js ,拷贝到 项目\Content\JavaScript\ 目录下。

14,我们编写的这个 .ts 会自动创建 项目\Content\Blueprints\TypeScript 目录,并创建名为 TS_Player.uasset 的蓝图文件,如果没有,就在 TS_Player.ts 里加回车,删回车修改一下它。因为它其实是实时编译的,并会在 UE 编辑器的 log 里打印信息,当然产生蓝图也是。

15,我们现在可以把蓝图拖到场景里,然后启动游戏

成功看到日志输出。

17,如何断点,调试 ts

在 .vscode 目录下创建1个 launch.json ,这是我们的 Attach 设置。

bash 复制代码
{
    "version": "0.2.0",
    "configurations": [

        {
            "type": "node",
            "name": "Attach Puerts",
            "port": 8080,
            "request": "attach",
            "skipFiles": [
                "<node_internals>/**"
            ],
        }
    ]
}

16,打开项目设置,把 puerts 的调试选项勾上,这里因为我们打断在 TS_Player 的 ReceiveBeginPlay() 方法中断点,所以需要把 Wait Debugger 也给勾上。

18,启动调试,迅速切回 UE5 编辑器去启动游戏。

这样就可以断到点了~

相关推荐
笑鸿的学习笔记1 天前
虚幻引擎5-Unreal Engine笔记之SET节点的输出引脚获取设置后的最新变量值
笔记·ue5·虚幻
Zhichao_971 天前
【UE5.1 C++】VS2022下载安装
ue5
m0_552200821 天前
《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
c++·游戏·ue5
曹勖之1 天前
在 UE5 蓝图中配置Actor类型的Asset以作为位置和旋转设置目标
ue5·机器人
曹勖之1 天前
UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误
matlab·ue5·机器人
AgilityBaby1 天前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby1 天前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
ue星空5 天前
UE音频中间件wwise插件
学习·ue5·音视频
AgilityBaby6 天前
UE5打包项目设置Project Settings(打包widows exe安装包)
c++·3d·ue5·游戏引擎·unreal engine
AgilityBaby7 天前
UE5蓝图暴露变量,在游戏运行时修改变量实时变化、看向目标跟随目标Find Look at Rotation、修改玩家自身弹簧臂
笔记·游戏·ue5·游戏引擎·蓝图