【问题标题】:UE4 add Widget Class BP which inherits from UUserwidget in BP Editor?UE4在BP编辑器中添加从UUserwidget继承的Widget Class BP?
【发布时间】:2021-11-18 01:08:49
【问题描述】:

我在 cpp 中有一个 AActor 类。我创建了一个继承自它的 BP,命名为 My_Actor_BP。在 cpp 类中,我声明了一些 UPROPERTY :

UPROPERTY(EditAnywhere, Category = "Event Section")
    TArray<UUserWidget*> Event_Dispatcher_0;
UPROPERTY(EditAnywhere, Category = "Event Section")
    TArray<UUserWidget*> Event_Dispatcher_1;
UPROPERTY(EditAnywhere, Category = "Event Section")
    TArray<UUserWidget*> Event_Dispatcher_2;
UPROPERTY(EditAnywhere, Category = "Event Section")
    TArray<UUserWidget*> Event_Dispatcher_3;

我想在其中包含一些自定义小部件。不得不说,这些定制的小部件都是继承自不同cpp类的BP类。这些所有不同的 cpp 类都继承自 UUserWidget 类。通过这种方式,我的艺术家可以实现他的小部件 BP。我可以在 cpp 函数中使用它们。到目前为止一切顺利。

当我检查 My_Actor_BP 中的“事件部分”并将新元素添加到 Event_Dispatcher_0 数组时,元素正在添加,但是当我尝试选择资产时,将会出现空的。没有推荐的 BP 或任何东西。

可能零推荐的原因是TArray的模板类型的类型。当我直接从 UUserWidget 创建一个 BP 类时,仍然没有答案。这种类型应该是什么?任何建议都会很棒。提前致谢。

【问题讨论】:

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


    【解决方案1】:

    如果您希望用户指定要由另一个对象管理的对象的类,则需要使用 TSubclassOf 模板。在上面的代码中,您要求属性指向一个演员,但该演员尚未创建。您要做的是指向该类,然后您可以在蓝图或本机代码中从该类创建小部件。

    GameModeBase.h 的源代码给出了很好的例子:

    /** HUD class this game uses. */
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Classes, meta = (DisplayName = "HUD Class"))
    TSubclassOf<AHUD> HUDClass;
    

    【讨论】:

      猜你喜欢
      • 2022-08-08
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2014-04-25
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多