You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UE4中C++声明的TArray<UUserWidget*>无法在蓝图编辑器选择Widget BP问题

问题原因

你当前声明的TArray<UUserWidget*>存储的是UUserWidget的实例对象指针,而你在编辑器详情面板中要选择的Widget蓝图是类资产,不是运行时生成的实例,所以编辑器无法匹配对应的可选资源。

解决方案

根据你的使用场景选择对应写法:

场景1:需要在数组中存储Widget蓝图类资产,后续用来动态创建Widget实例

把模板参数替换为TSubclassOf<UUserWidget>即可,修改后的UPROPERTY声明如下:

UPROPERTY(EditAnywhere, Category = "Event Section", meta = (AllowAbstract = "false"))
TArray<TSubclassOf<UUserWidget>> Event_Dispatcher_0;
// 其余3个数组同理修改即可
  • TSubclassOf<UUserWidget>会限制可选资产只能是继承自UUserWidget的类,完全符合你的需求
  • 可选的meta参数AllowAbstract = "false"会过滤掉抽象C类,只显示可以实际实例化的蓝图类
    修改完成后重新编译C
    代码,再打开My_Actor_BP的详情面板,就能看到所有继承自UUserWidget的Widget蓝图选项。
    后续你在C++中调用CreateWidget创建实例时,直接传入数组中存储的TSubclassOf对象即可,和原有调用逻辑适配,不需要额外修改创建逻辑。

场景2:确实需要存储UUserWidget实例指针

这种需求只能在运行时给数组赋值,编辑器下无法直接选择资产填充,你可以把UPROPERTY的EditAnywhere改为VisibleAnywhere等运行时可读写的标识,运行时生成Widget后再写入数组即可。

内容的提问来源于stack exchange,提问作者sirmaci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:42:00