puerts icon indicating copy to clipboard operation
puerts copied to clipboard

[unreal] 请问每次修改C++代码或者蓝图类后都需要生成ue.d.ts, 有什么办法可以避免每次消耗大量时间生成?

Open jackfong66 opened this issue 3 years ago • 6 comments

因为项目是C++/蓝图/TS 混合编码,C++代码和蓝图代码修改频率很高, 每次修改后生成ue.d.ts 会非常耗时。 请问有没有方法可以避免?

jackfong66 avatar Apr 24 '22 08:04 jackfong66

我这里生成ue.d.ts本身不耗时,你是不是开启了继承引擎功能呢? 开启后ts变动都会触发编译,是ts编译耗时。

chexiongsheng avatar Apr 24 '22 09:04 chexiongsheng

点击"ue.d.ts" 后 ,控制台可以看到正在遍历游戏中的所有蓝图。 我是默认配置。你所说的继承引擎功能是不是默认开启 ?

jackfong66 avatar Apr 24 '22 09:04 jackfong66

你所说的继承引擎功能是不是默认开启 ?

看Config/DefaultPuerts.ini,AutoModeEnable是True还是False

chexiongsheng avatar Apr 24 '22 09:04 chexiongsheng

谢谢,我看到AutoModeEnable=true 我修改一下试试

jackfong66 avatar Apr 24 '22 09:04 jackfong66

耗时是因为这里在遍历&加载蓝图资产: https://github.com/Tencent/puerts/blob/4fb9a91cff026f5d0a1807aefa034e89dc68b284/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp#L1161

@chexiongsheng 不耗时可能是测试工程里的资产比较少。

我的解决办法是修改了这块的filter,只处理需要生成d.ts的蓝图资产,不遍历整个工程。(这个需要根据各项目自身情况而定)

mysticfarer avatar Apr 27 '22 04:04 mysticfarer

耗时是因为这里在遍历&加载蓝图资产:

https://github.com/Tencent/puerts/blob/4fb9a91cff026f5d0a1807aefa034e89dc68b284/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp#L1161

@chexiongsheng 不耗时可能是测试工程里的资产比较少。

我的解决办法是修改了这块的filter,只处理需要生成d.ts的蓝图资产,不遍历整个工程。(这个需要根据各项目自身情况而定)

那你看看能否加到你之前的Puerts.Gen里头,用一个参数来控制,而不是修改代码呢?

chexiongsheng avatar Apr 27 '22 05:04 chexiongsheng