动态创建UMG面板小部件

时间:2017-08-03 21:06:44

标签: c++ unreal-engine4 unreal-umg

当我动态创建/实例化从UUserWidget派生的UMG小部件时,我使用CreateWidget。但是,这不适用于panels UWrapBox

TSubclassOf<UWrapBox> WrapBoxClass; // Assigned in Unreal Engine Editor.
auto wrapBox = CreateWidget<UWrapBox>(GetOwningPlayer(), WrapBoxClass);
// -> Error CreateWidget can only be used on UUserWidget children.
UPanelWidget* parent;
parent->AddChild(wrapBox);

由于我不想将面板包装到UserWidget中(这可以作为解决方法),我使用NewObject

auto wrapBox = NewObject<UWrapBox>();
UPanelWidget* parent;
parent->AddChild(wrapBox);

在编辑器中进行测试时,这似乎有效,但CreateWidget检查APlayerController是否为本地,设置PlayerContext并分配外部对象。 NewObject没有发生这种情况。 UWidgetTree::ConstructWidget也使用NewObject进行创作。

所以我的问题:

  1. UE4是否提供了一种内置方式来动态创建像UserWidgets这样的UMG面板?
  2. 使用NewObject()时,我有什么副作用 创建小部件?

0 个答案:

没有答案