English
If you try to spawn a component in C++ using NewObject()
, what you should do is to use CreateDefaultSubobject
instead of it, which will solve the issue.
中文
最近写一个组件SceneComponent组件,叫它A吧。我在A的构造函数中新建了两个子StaticMeshComponent
组件,其中一个是用CreateDefaultSubobject
创建的S1,一个则是直接用NewObject
创建的S2。
A被我写完之后,我把它挂到一个蓝图类上,然后点编译和保存,保存的时候弹出错误:
the graph is linked to private objects
Google查不出个啥,于是只能够读源码。查到源码:
1 | // File: SavePackage.cpp |
也就是说当要保存的这个UObject的ObjectFlags
字段有问题。断点可得它的名字,是前面创建的S2组件,以及它的ObjectFlags
是0。
回到创建S1和S2的地方,继续断点。可以看到S1的ObjectFlags
正常,而S0的ObjectFlags
确实是0。
所以猜测是不是不能够在构造函数中使用NewObject。
修改S2的创建方法为StaticMeshComponent
之后,问题解决。