[ ue4 ]为了UI部分UMG基础设计图UE4项目的共同问题记录,关于UI和c交互UI基础控件和自定义控件基础控件的自定义控件3D UIUI自适应优化UI开发示例UI交互事件SVN的几点
UMG基础
“虚幻图形界面设计器”(UMG )创建游戏中的UI元素,例如HUD、菜单或要呈现给用户的其他界面相关图形
UMG的中心是控件。 这些控件是一系列预创建的函数,可用于构建按钮、复选框、滑块和进度条等接口。 这些控件在使用两个选项卡创建的专用控件设计图中进行编辑。 “设计器”选项卡提供界面和基本函数的可视布局,“图表”选项卡提供所用控件后面的功能。
蓝图UMG UI设计师快速入门
【初学者必读】Unreal Engine 4 UI入门教程(上)
【初学者必读】Unreal Engine 4 UI入门教程(下)
级别图UI
单个关卡添加简单UI的基本步骤记录:
以逻辑UI蓝图设计器模式配置UI控件以在角色蓝图中存储数据并创建数据变化以在UI蓝图图表模式中获取数据,并与UI控件相关联以在角色蓝图中查看UI蓝图http://www .
以两个关卡为例,Main (设置关卡); FirstPersonExampleMap (游戏级别) )。
在Main路线图中布局控件
6 .为每个按钮添加点击事件
在Main路线图的图表模式下,将执行逻辑添加到按钮单击事件中
在主级别的级别图中显示UI面板,同时显示或隐藏鼠标
在主级别的魔兽世界中将默认的甜长颈鹿类设置为引擎默认的角色
因为不想让玩家在主菜单之后来回奔跑和射击,所以可以为该地图指定游戏模式,将玩家的角色指定为可以玩的第一人称角色(FirstPersonCharacter )
涉及多个关卡跳转UI的基本步骤记录:
向PauseMenu的UI路线图添加控件在PauseMenu的UI路线图图表模式下向按钮添加逻辑角色在路线图中添加键盘按钮单击事件以创建PauseMenu的UI实例
在UI控件的详细信息面板中,您几点考虑isVariable和ZOrder的作用? 通过命名控件并设置变量,可以在UI路线图图表中访问和控制该控件。 建议选中isVariable中所有需要控件的UI控件; 此外,将ZOrder设置为显示在稍后设置的图像的顶部。
如果要为控件创建蓝图(UI ),建议将其提升为变量,以便以后可以通过蓝图脚本访问。 函数绑定、属性绑定和事件驱动的区别在事件驱动UI中更新
函数绑定与问题相同。 '玩家角色的蓝图是什么?' 理解后,对每个帧调用函数会消耗性能
属性绑定在构建时获取对玩家角色蓝图的引用,而无需逐帧投影进行检查'玩家角色蓝图是什么? 只要逐帧查询生命和能量值,成本就比函数绑定低。
事件驱动程序在玩家生命发生变化时检查HUD控件蓝图上的自定义事件(无论是否固定),并更新显示。
在角色蓝图中,将事件调度程序代码添加到减少生命的脚本末尾。 在减少生命时调用此事件调度程序。 在HUD控件的蓝图事件图表中,可以使用Event Construct获取和存储玩家角色蓝图的引用。 也可以将自定义事件绑定到在调用事件调度器时调用的角色蓝图事件调度器。 下图显示了如何将生命和能量集成到同一事件构造脚本中。
在UI路线图中如何在Text控件中修改Text的内容? 首先,对应的函数是settext(text )
接下来,
蓝图之间的通信
UE4-)蓝图(第20课)蓝图之间的交流)类型转换,公共变量) UMG和c交互UMG的最佳实践
UE4 C —— UMG与c的相互作用
[UE4]UMG使用案例(c )
UE4随笔: UMG与c的对话
使用UMG用户界面
UI路线图的c代码示例autopath=text ('构件蓝打印'/game/RES/ui/log in/loginform.loginform _ c ' ); uclass *构件cls=loadclassuserwidget (null,Path ); if (aplayercontroller * PC=get wold (-getfirstplayercontroller ) )用户构件*构件=createwidgetuserwidge
t>(PC, WidgetCls); if (Widget) { Widget->AddToViewPort(); }} C++中获取UMG中的控件,并进行事件绑定UE4 C++ —— UMG和C++交互
GetWidgetFromName(Name)自动绑定控件
UPROPERTY(meta = (BindWidget)) // 该变量会自动寻找名为IConImage的按钮进行绑定,如果没找到会编译出错class UButton* IConImage;按钮绑定事件
button->OnClicked.AddDynamic(this, &UMyUserWidget::ClickButton);图片绑定事件
image->OnMouseButtonDownEvent.BindUFunction(this, "useFunc");设置控件相关属性
text->SetText(FText::FromString(FString(TEXT("Test Text"))));image->SetIsEnabled(0);text->SetVisibility(ESlateVisibility::Visible);//设置TextBlock颜色MyTextBlock->SetColorAndOpacity(FSlateColor(FLinearColor(R / 255.0f, G / 255.0f, B / 255.0f, 1)));设置鼠标永久可见
void AMyPlayerController::BeginPlay() {widget = Cast<UMyUserWidget>(CreateWidget(this, Creation));widget->AddToViewport();bShowMouseCursor = true;}Widget移动
UImage* image = Cast<UImage>(GetWidgetFromName(TEXT("Mouse")));UCanvasPanelSlot* slot = Cast<UCanvasPanelSlot>(image->Slot);slot->SetPosition(slot->GetPosition() + FVector2D(0, 1));获取屏幕大小
UGameplayStatics::GetPlayerController(GetWorld(), 0)->GetViewportSize(x_int,y_int)获取鼠标位置
float px, py;if (UGameplayStatics::GetPlayerController(GetWorld(), 0)->GetMousePosition(px, py))获取当前控件在当前窗口大小下的缩放
UWidgetLayoutLibrary::GetViewportScale(this)设置Widget的位置(到鼠标位置)(与锚点的偏移会受到窗口大小缩放的影响,所以需要除以缩放)
UImage* image = Cast<UImage>(GetWidgetFromName(TEXT("Mouse")));UCanvasPanelSlot* slot = Cast<UCanvasPanelSlot>(image->Slot);auto pc = UGameplayStatics::GetPlayerController(GetWorld(), 0);if (image && pc) {float px, py;if (pc->GetMousePosition(px, py)) {UCanvasPanel* cp = Cast<UCanvasPanel>(GetWidgetFromName(TEXT("ScreenPanel")));float scale = UWidgetLayoutLibrary::GetViewportScale(this);slot->SetPosition(FVector2D(px / scale, py / scale));}}设置鼠标位置(需要在Build.cs里面加SlateCore)
UGameplayStatics::GetPlayerController(GetWorld(), 0)->SetMouseLocation(x,y) UI基础控件和自定义控件UMG拼界面常用技术简介
UE4入门之路(UI篇):UMG系统介绍
控件反射器
基础控件Border是一个只能包含一个子元素的容器。
添加一个名为testBorder的UserWidget,添加一个Border到默认成Canvas Panel容器,添加一个TextBlock到Border容器,没有看到TextBlock文字,是因为Border背景是白色、TextBlock的文字颜色也是白色。Border可以设置背景图片,也可以是颜色。背景颜色和背景图片可以同时设置,最终的效果是保留图片纹理+图片颜色背景颜色(“颜色颜色”就是叠加颜色)。如果背景颜色为白色,则保留背景图片原本的颜色。也可以设置Brush Color的透明度,这样背景图片也会变得透明了。UE4中的所有颜色都可以设置透明度。与其它容器不同的是,Border容器可以在Border本身属性中设置子控件的颜色(不局限与文本控件,子控件也可以是图片等所有UI控件)和透明度,最终的效果是保留图片纹理+图片颜色*Border.Content.Color。如果Border.Content.Color为白色,则呈现子控件本来的颜色。
如果Border的子控件BlockText设置了字体颜色,最终颜色也会跟Border.Content.Color叠加。Border控件还有一个比较特殊的地方就是可以相应鼠标的各种事件。
Named Slot
用户创建的UI,在成为其他UI的子控件时,默认情况下该子控件是不能拥有子控件的,此时可以给创建的UI中添加一个Named Slot,这个UI就可以拥有子控件。
RichTextBlock
UE4 UMG RichTextBlock功能简介
ComboBox(String)
ComboBox 下拉菜单
SpinBox 输入一个范围的数值。
UMG Spin Box 和 Text Box 限定输入为 Int
EditableText
EditableText(Multi-Line)
TextBox 输入文本(单行输入)
TextBox(Multi-Line) 多行输入
Text Box(单行、多行、EditableText控件)
【UE·UI篇】ListView使用经验总结
自定义控件可多选的复选框
UE4中UMG CheckBox Group实现
自定义框选
【UE4】实现自定义框选
导入图片
UE4初探——从外部导入图片
UE4制作3DUI的方法
控件交互
如使用控件组件显示以 3D UI,还需要玩家与此控件进行交互,可通过Widget Interaction组件来实现交互。
Widget Interaction组件通过射线检测,确定它是否命中世界场景中的控件组件。如命中,可设置规则确定与其交互的方式。 交互通过模拟定义的按键来执行。
UE4制作3DUI的基本步骤
先制作一个控件蓝图,在实例化一个继承与Actor的类然后为上面的实例添加一个Widget组件,并将组件的class属性设置为最开始的控件蓝图 UI适配待补充
优化制作 UI 画面时可进行以下优化:
尽量为美术资源使用 纹理,尽量不使用 材质。
尽量使用 事件驱动 UI 更新,尽量不使用绑定或 Tick 事件。
使用缓存不常变化的控件。
使用 控件反射器(Ctrl+Shift+W)获取关于控件的信息和数据。
UI开发示例 UI对话事件参考
https://space.bilibili.com/67108639/video
【功能】UE4 AI 对话系统流程演示
SVN进行UE4项目协作使用SVN进行UE4项目协作
在虚幻 4 中使用 SVN 作为版本控制软件
UE4项目工程的目录结构
开发规范
https://github.com/Allar/ue5-style-guide
EventStruction被触发两次的问题
怎么从一个WidgetBlueprint中访问另一个WidgetBlueprint中公开的变量
GetAllWidgetsOfClass在做全局搜索的操作,这里也可以在蓝图定义一个Widget类型的变量,引用另一个蓝图,从而去访问其内部的变量
UE中Multi-Line Text Box换行的快捷键为:Shift + Enter
在while循环体中调用Delay来延时的时候,陷入死循环的问题
循环中加入Delay
UE4中UMG响应按键输入事件
UMG - 键盘快捷键