UE4在BP编辑器中添加继承自UUserwidget的Widget Class BP?
UE4 add Widget Class BP which inherits from UUserwidget in BP Editor?
我在 cpp 中有一个 AActor class。我创建了一个 BP 继承自它命名为 My_Actor_BP。在 cpp class 中我声明了一些 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;
我想在其中包含一些自定义的小部件。不得不说,这些自定义的widgets都是BPclasses,继承自不同的cppclasses。而这些所有不同的 cpp classes 都继承自 UUserWidget class。通过这种方式,我的艺术家可以实现他的小部件 BP。我可以在 cpp 函数中使用它们。到目前为止一切顺利。
当我检查 My_Actor_BP 中的“事件部分”并将一个新元素添加到 Event_Dispatcher_0 数组时,元素正在添加,但是当我尝试选择资产时,那里将是空的。没有推荐的 BP 或任何东西。
可能是零推荐的原因是TArray的模板类型。当我直接从 UUserWidget 创建一个 BP class 时,仍然没有答案。这种类型应该是什么?任何建议都会很棒。提前致谢。
如果您希望用户指定一个对象的 class 由另一个对象管理,您需要使用 TSubclassOf<> 模板。在上面的代码中,您要求 属性 指向一个演员,但该演员尚未创建。您要做的是指向 class,然后您可以在蓝图或本机代码中从 class 创建小部件。
GameModeBase.h 的来源给出了很好的例子:
/** HUD class this game uses. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Classes, meta = (DisplayName = "HUD Class"))
TSubclassOf<AHUD> HUDClass;
我在 cpp 中有一个 AActor class。我创建了一个 BP 继承自它命名为 My_Actor_BP。在 cpp class 中我声明了一些 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;
我想在其中包含一些自定义的小部件。不得不说,这些自定义的widgets都是BPclasses,继承自不同的cppclasses。而这些所有不同的 cpp classes 都继承自 UUserWidget class。通过这种方式,我的艺术家可以实现他的小部件 BP。我可以在 cpp 函数中使用它们。到目前为止一切顺利。
当我检查 My_Actor_BP 中的“事件部分”并将一个新元素添加到 Event_Dispatcher_0 数组时,元素正在添加,但是当我尝试选择资产时,那里将是空的。没有推荐的 BP 或任何东西。
可能是零推荐的原因是TArray的模板类型。当我直接从 UUserWidget 创建一个 BP class 时,仍然没有答案。这种类型应该是什么?任何建议都会很棒。提前致谢。
如果您希望用户指定一个对象的 class 由另一个对象管理,您需要使用 TSubclassOf<> 模板。在上面的代码中,您要求 属性 指向一个演员,但该演员尚未创建。您要做的是指向 class,然后您可以在蓝图或本机代码中从 class 创建小部件。
GameModeBase.h 的来源给出了很好的例子:
/** HUD class this game uses. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Classes, meta = (DisplayName = "HUD Class"))
TSubclassOf<AHUD> HUDClass;