mysticfarer

Results 7 comments of mysticfarer

影响不是很大,禁用Live Coding就能避免此问题; 但部分项目或引擎可能默认启用了Live Coding,造成TS无法调试,会对使用者带来困惑。

对V8Inspector里的listen fd设置`FD_CLOEXEC`能直接解决此问题, 但拿到fd的相关代码封装有点深,未再深入跟进。

耗时是因为这里在遍历&加载蓝图资产: https://github.com/Tencent/puerts/blob/4fb9a91cff026f5d0a1807aefa034e89dc68b284/unreal/Puerts/Source/DeclarationGenerator/Private/DeclarationGenerator.cpp#L1161 @chexiongsheng 不耗时可能是测试工程里的资产比较少。 我的解决办法是修改了这块的filter,只处理需要生成d.ts的蓝图资产,不遍历整个工程。(这个需要根据各项目自身情况而定)

想请问下,您在TS中的打点代码是如何实现的呢? TS没有类似C++ RAII的特性,似乎只能用finally来搞,有点啰嗦。

嗯,谢谢:D UE C++的部分了解了, 主要在想在TS这边如何表达 “scope” 写法能优雅一些。

> > 想请问下,您在TS中的打点代码是如何实现的呢? TS没有类似C++ RAII的特性,似乎只能用finally来搞,有点啰嗦。 > > 试试decorator?自动把函数包一层。 > > 上线版本的decorator实现为空就可以了。 嗯,目前我也是用decorator处理的; decorator有一点不太友好,就是只能用在class method上,class外面的function没法用。

感谢车神回复:D 1. 确认我的环境中, `bForceAllUFunctionInCPP = false` * 注: 在重现示例里用了 `@rpc.flags(rpc.FunctionFlags.FUNC_Net, ...)` ,有`FUNC_Net`标志的函数是会经过虚幻蓝图ProcessEvent的,不会直接在js中执行。 2. 明白且赞同车神的合理做法,代码确实应该这样写。 * 但比较棘手的是,在业务复杂、协作同事多的时候,难免在 `MulticastFooArray` 这类函数中会出现修改输入参数的行为,一旦输入参数是数组,且此数组在函数内扩容,就会发生写越界,并在之后的随机位置崩溃。