Tencent/puerts

[UE] Bug: Mixin实例持有的js实例丢失了

Closed this issue · 10 comments

前置阅读 | Pre-reading

Puer的版本 | Puer Version

1.0.6

UE的版本 | UE Version

UE 5.3.2

发生在哪个平台 | Platform

win

错误信息 | Error Message

蓝图BP_Char 派生自 BP_CharBase

代码:
BP_CharBase_ts是BP_CharBase的mixin实现,持有一个js对象
image
image

问题重现 | Bug reproduce

https://github.com/operatorkai/puerts_unreal_demo_fork

修改Editor参数,独立进程,启动1个DS + 2Client
image
image

启动Play

一秒或者几秒后 出现js异常
image

PS: 只有1个角色 貌似没问题 运行1分钟也未报错,有第二个人就会出错

不好意思,回去过年了。
我稍后看。

新年好~ 多谢多谢

我试了下,只有“单进程下运行”去掉勾才会报错,其它设置相同不会报错。

本来是这样:分别启动独立编译出的 DS.exe 和 client.exe ,ds和client都会出现丢失实例
勾掉 单进程下运行 是模拟正常的多进程独立环境,上面的复现步骤是想着方便您做复现操作

定位原因是你mixin的是基类,指明objectTakeByNative的是基类。
但创建的对象是子类。按目前的设定基类的设置不会生效。

嗯 按照常规,基类会包含一些基础实现
那么 您建议是 这种情况可以添加支持 还是 换一种使用方式呢 【比如基类持有的通用logic实例就是在蓝图或cpp中 或 其他方式】

感觉是用法问题哈哈,基类的字段和函数,子类ts也不容易复用
不过针对这个用法,想了个办法:ts中的对象,主动记录到蓝图中持有一下 就可以

我考虑下是否添加支持

我加了,你更新试试

试了下,可以了~