[UE] suggestion TS继承CPP中定义的一个UObject类,在TS中通过NewObject创建的实例,其CPP部分会被GC析构
detail | 详细描述
CPP中定义一个UObject类

在TS中继承上述CPP类

在TS中创建一个实例:

之后访问这个实例的成员变量 会发现这个实例的CPP部分会被GC给析构掉,导致访问int_in_cpp会报错, 而访问int_in_ts是正常的。
对于此种情况,怎样才能保证cpp中的实例不被gc所销毁? 我必须自己去控制CPP中的实例的生命周期吗? 比如:对其调用AddToRoot 或者将其放入一个TArray中?
makeUClass已经是过时方式了,不推荐使用。
makeUClass得到的类,创建的对象应该由引擎持有
引用关系是这里描述的第二种: https://github.com/Tencent/puerts/blob/master/doc/unreal/mixin.md#%E5%89%8D%E7%BD%AE%E7%9F%A5%E8%AF%86
不行被自动CG,你再构建之后,AddToRoot(),销毁的时候,自动RemoveFromRoot()即可。TS里面,你可以手动管理这个状态
引用关系是这里描述的第二种: https://github.com/Tencent/puerts/blob/master/doc/unreal/mixin.md#%E5%89%8D%E7%BD%AE%E7%9F%A5%E8%AF%86
我尝试使用Mixin
有几个问题,麻烦大佬解答一下:
- 在ts中创建实例的时候,应该用new 还是 NewObject? 我两种都试了,貌似没有什么区别
- ts中创建实例,TS中定义的Constructor不会被调用到,这个问题如何解决?
- 对一个cpp基类,调用两次mixin的时候,第二次调用会报错,请问如何解决?

您好,我一般不常用邮箱,有重要邮件,请QQ我下,谢谢!
我又尝试,对mixin的第三个参数,将inherit置为true
这样 两个子类的mixin调用都ok了。并且各种测试用例都正常
但是,当GC发生后,客户端会立即崩溃
崩溃栈如下:

请问这种情况可能是什么原因导致的?
makeUClass已经是过时方式了,不推荐使用。
makeUClass已经是过时方式了,现在使用什么方式?puerts_unreal_demo里面也是用的makeUClass 我有个TS类继承自class MyObject extends UE.Object,我该怎么创建MyObject实例 UE.NewObject(makeUClass(MyObject), this, null, 200) 这种方式能创建实例但是Outer和Flag都没有正确传到C++的NewObject函数 UE.NewObject(MyObject.StaticClass(), this, null, 200) 其他参数正确传过去了,但是Class传过去的是UObject
您好,我一般不常用邮箱,有重要邮件,请QQ我下,谢谢!