选型
客户端引擎:UE5.6+PuerTS。不选5.7的原因,主要是稳定,我的目的是实践动画相关的。PuerTS选个puerts_v8_94版本,兼容性稍微好点?
服务器:大概率是NodeJS+TS。
其实Unrealsharp我也想试试,之前做一个Unity的项目的时候,感觉作为游戏开发确实挺顶的。而且能通吃服务端客户端。
PuerTS
PuerTS官网的介绍相对简单,刚接触游戏开发或者TS的同学会有点困难。下面几点是我过程中碰过的一些坑:
- 尽量不要用git-master安装的方式,用Release包。可以避免配置Backend引擎的问题。例如文档上写的
v8_10.6.194实际上在master是被移除掉了。而新的V11版本binrary目录又变了,看起来在调整中 - UE最高目前支持到5.6。5.7因为某些接口变了,编译静态绑定会报错。
- 插件的目录要注意不要嵌套多一层。不然调用
enable_puerts_module.js会报错 - 安装Node和NPM、进入到Puerts\插件目录,调用
node enable_puerts_module.js,脚本会安装依赖和生成tsconfig。这个居然文档没有说,而且getting started.md的中文版居然是空的。 - 如果你使用VsCode,需要再添加一些Task,具体可以参考:UE5 从零搭建UE的puerts开发环境
- 如果你使用Rider可以将Typescript添加的工程,类似这样:
顺便开启tsc自动编译,如下:

那基本上环境的配置完了。Rider基本能完美识别符号,后续看开发过程再继续评估Rider是否适合作为AIO的IDE。 7. 要测试PuerTS是否已经work,可以创建一个GameInstance类:
#include "ARDTsGameInstance.h"
void UARDTsGameInstance::OnStart()
{
JsEnv = MakeShared<puerts::FJsEnv>();
TArray<TPair<FString, UObject*>> Arguments;
Arguments.Add(TPair<FString, UObject*>(TEXT("GameInstance"), this)); // 可选步骤
JsEnv->Start("QuickStart", Arguments);
UE_LOG(LogLoad, Display, TEXT("GameInstance::OnStart"));
}
void UARDTsGameInstance::Shutdown()
{
UARDGameInstance::Shutdown();
JsEnv.Reset();
}
然后在Typescript目录(跑上面js脚本时候生成的),建一个TS脚本(QuickStart.ts):
import * as UE from 'ue'
import {argv} from 'puerts';
let world = (argv.getByName("GameInstance") as UE.GameInstance).GetWorld();
console.log("World Name: " + world.GetName());
- 最后在编辑器点ProjectsSettings替换GameInstancce为UARDTsGameInstance。点击Play运行,观察Log是否输出World Name:xxxx,输出成功的话,整个PuerTS的开发环境就准备好了。下一步就是正式开发逻辑了。
感谢您的耐心阅读!如需交流,请留个评论吧!