问题标签 [unreal-umg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1060 浏览

c++ - UE4 如何使用 UMG ListView 显示结构列表?

如果这看起来微不足道,我深表歉意,但我已经搜索了一段时间的答案,但似乎找不到解决方案。

我有一个结构列表(TArray确切地说是结构。)代表我的游戏中的高分。(每个结构代表一个高分,字段类似于“名称、日期、玩家分数、游戏模式等”我使用这个SaveGame 方法将我的高分数组保存到文件中和从文件中读取。

我将它与模拟值一起使用并且系统正常工作,现在我想创建一个 UMG 小部件,它将显示高分列表,这就是我遇到障碍的地方。

我想使用 ListView 将每个结构显示为 ListViewEntry。据我了解(我正在关注教程),UMG 列表视图需要它的条目小部件来实现IUserObjectListEntry ,特别是必须实现该OnListItemObjectSet (UObject* ListItemObject)方法。此方法负责将对象分配给 Listview 条目并将其字段映射到各种可视小部件。你现在可以看到我的问题了,我有一个 UStructs 列表,这个方法需要一个 UObject 指针。

我真的不知道我需要做些什么才能使用 UStruct 进行这项工作。没有创建一个与我的结构几乎相同的虚拟 UObject,并且在将结构传递给此函数之前,我需要将其字段复制到虚拟 UObject 中并改为传递它。我认为这种方法非常不雅。一定有更好的方法。你知道任何?

我想避免仅仅为了将它传递给这个函数而创建一个虚拟的 UObject。

我尝试使用 UObjects 数组而不是 Structs 数组,但问题是,UObjects 数组始终是指针数组,当它被保存时,指针被保存而不是实际数据,所以当它被加载时数据没用。

也许有一个可以为ListViewEntry小部件实现的特定于结构的接口?或者也许有一种方法可以在保存 Uobjects 数组的指针之前取消引用它们?

TL;博士

我有以下结构:

C++

在以下数组中;

C++

我想在 UMG ListView 中显示高分数组。ListView 需要其条目来实现User List Object接口,该接口具有以下功能:

要实现的接口事件

如您所见,该事件仅接受 UObject。因此我的问题。

0 投票
0 回答
40 浏览

c++ - UE5:GetScreenSpacePosition() 总是返回 (0,0)

我试图从中提取鼠标位置FPointerEvent,但无论如何,它总是返回 (0,0) 的坐标。

请注意,我知道APlayerController::GetMousePosition()功能,但我将实现与拖动 UMG 相同的功能,因此无法从播放器控制器获取鼠标属性

代码

顺便说一句,我正在使用UE5

0 投票
1 回答
437 浏览

c++ - UE4在BP编辑器中添加从UUserwidget继承的Widget Class BP?

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

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

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

在此处输入图像描述

在此处输入图像描述

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

0 投票
0 回答
43 浏览

ios - UE4 - iOS 输入不适用于已部署的构建

我在 iOS 上的打包版本存在问题。终于通过试飞将我的应用程序放到了 iPhone 上,并认为我是赢家。但是我的输入都不起作用。如果手机被摇晃,我正在使用事件滴答声上的“获取运动状态”节点,以及一些 UMG Widget 按钮,使用 onclicked 和 onpressed 输入事件,这些都不适用于已部署的构建。但是,当我通过 unRemote 2 应用程序运行它时,它运行良好,忽略了网络中的延迟。

我有这个在 android 版本上工作,所以我知道我的蓝图确实有效,只是在 iOS 上似乎不喜欢它。

我已经尝试过输入设置的多种组合,启用所有 Apple 插件,启动一个新的 Blueprint 项目,启动一个新的 C++ 项目并进入 XCode 项目并启用 slate,但我现在正处于困境中.

我在论坛等上遇到的任何事情我都尝试过,但没有运气。启用鼠标作为输入,使小部件可聚焦等

在 iOS 方面,我是否遗漏了一些非常明显的东西?

该应用程序最初仅作为蓝图构建,但已迁移到 XCode 项目中。UE 4.27、XCode 12.4、iOS 14.8 上的 iPhone x。

如果有人有任何想法,将不胜感激。

谢谢

手机摇一摇节点设置

退出按钮节点设置

0 投票
0 回答
356 浏览

vector - UE4 - 使用另一个 Actor 的世界位置(太阳能电池板)在其本地 Z 轴上旋转 Actor

我正在做一个有太阳能电池板的项目。太阳能电池板必须始终以最有效的方式面向太阳。

在我的测试项目中,有一个球体(代表太阳),围绕世界中心旋转。

这是我垂直放置的太阳能电池板: 在此处输入图像描述

这是使太阳能电池板面向太阳的蓝图部分: 在此处输入图像描述

太阳能电池板围绕其 z 轴旋转以始终面向太阳(橙色球体是太阳)。它就像一个魅力: 在此处输入图像描述

当我有一块太阳能电池板时,问题就开始了,它的放置角度不是 90 度。这是我的太阳能电池板; 在此处输入图像描述

当我使用相同的蓝图启动它时,它会使其垂直,因为 Roll 和 Pitch 为 0。如果我尝试像这样设置 Roll 和 Pitch: 在此处输入图像描述

它使它围绕世界的z轴旋转。 在此处输入图像描述

这是我不想要的。

我希望它围绕其本地 z 轴旋转。我认为唯一的方法是使用“添加本地轮换”节点。当我只将局部旋转添加到 z 轴时,它的行为就像我想要的一样(围绕其底部旋转),但我无法计算输入添加局部旋转的 z 输入的值。

我需要帮助计算局部角度,使用太阳的世界位置和太阳能电池板的世界旋转或前向矢量(对此也不确定)。

任何帮助,将不胜感激。

0 投票
1 回答
31 浏览

c++ - 如何使用 C++ 从 Unreal 中的 UMenuWidget (UUserWidget) 传递值或调用 AMyPlayerController (APlayerController) 的函数?

我的UMenuWidget(派生自UUserWidget)需要将值传递给AMyPlayerController(派生自APlayerController)。

我努力了:

但是inGameHUD->MenuWidgetfromAMyPlayerController::BeginPlay()返回NULL,可能是因为MenuWidget尚未创建。
这使我无法添加/绑定功能。

我该怎么做/解决这个问题?

请帮助我,请。
谢谢你。

0 投票
1 回答
16 浏览

unreal-engine4 - 有没有办法独立使用拖动事件的左右两侧?

在 Unreal 的蓝图中,我想以不同的方式使用 UI Canvas 的左右两侧。这可以单独发生,但也可以同时使用。当前使用左侧拖动时,左侧的拖动事件会在您按下右侧的那一刻调用 drop 事件。即使在使用左拖动时按下右侧,有没有办法保持左侧的拖动事件?