01 设置UMG

UMG 是依赖于一些模块的,需要添加这些模块到"工程名.Build.cs"中。
在"HowTo_UMG.Build.CS",添加"UMG"到包括了公共模块的列表,并把"Slate"和"SlateCore"添加到包含了私有模块的列表中。

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });

然后取消对如下行的注释:

PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

02 扩展游戏模式

  • 我们要创建的菜单来自于 User Widgets(用户控件),我们需要写一个创建和展示新 User Widgets(用户控件) 的函数,然后在游戏启动时调用该函数。
    在自己的游戏模式类中定义:
public:/** 在游戏开始时调用。 */virtual void BeginPlay() override;/** 移除当前菜单控件并且如果可能,从指定类中创建新控件。 */UFUNCTION(BlueprintCallable, Category = "UMG Game")void ChangeMenuWidget(TSubclassOf<UUserWidget> NewWidgetClass);protected:/** 在游戏开始时我们将作为菜单使用的控件类。 */UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UMG Game")TSubclassOf<UUserWidget> StartingWidgetClass;/** 用作为菜单的控件实例。 */UPROPERTY()UUserWidget* CurrentWidget;
  • 为了在代码中使用 User Widgets(用户控件),需要添加头文件 #include “Blueprint/UserWidget.h”

  • 在HowTo_UMGGameMode.cpp中,我们需要定义如何在菜单间进行变更。 我们需要从视口中移除任意激活的 User Widget(用户控件) (如存在的话)。 然后我们可以创建新的 User Widget(用户控件) 并将其添加到视口中。

void AHowTo_UMGGameMode::ChangeMenuWidget(TSubclassOf<UUserWidget> NewWidgetClass)
{if (CurrentWidget != nullptr)//不为空,移除{CurrentWidget->RemoveFromViewport();CurrentWidget = nullptr;}if (NewWidgetClass != nullptr){CurrentWidget = CreateWidget<UUserWidget>(GetWorld(), NewWidgetClass);if (CurrentWidget != nullptr){CurrentWidget->AddToViewport();}}
}

这个代码将会创建我们提供的任意 Widgets(控件) 的实例,并将其放置于屏幕上。 它也可以用来移除实例,所以即使 Unreal Engine(虚幻引擎) 可以同时处理许多 Widgets(控件) 的显示和互动,一次也只能激活一个实例。 我们不需要直接销毁 Widgets(控件) ,因为将其从视口中移除并清除(或者变更)引用它的所有变量将会导致其被 Unreal Engine’s(虚幻引擎的) 垃圾收集系统清除。

  • 在BeginPlay中调用该函数:
void AHowTo_UMGGameMode::BeginPlay()
{Super::BeginPlay();ChangeMenuWidget(StartingWidgetClass);
}

以上已经构建了代码的框架创建和显示菜单,并在不需要它们时移除它们。然后 我们可以返回 Unreal Editor(虚幻编辑器) 并设计菜单资源了

03 使用蓝图创建菜单控件

https://www.52vr.com/extDoc/ue4/CHN/index.html

UE4 UMG入门——创建和显示游戏菜单相关推荐

  1. VS2019/MFC编程入门之对话框:向导对话框的创建及显示

    上一讲讲了属性页对话框和相关的两个类CPropertyPage类和CPropertySheet类,对使用属性页对话框做准备.本节将为大家演示如何创建向导对话框. 仍然以前面的"加法计算器&q ...

  2. ue4 项目模板_Unreal 学习和使用UE4的第二步——创建项目和模板试玩 - 游戏编程 ️...

    创建自己的项目 启动 可以从Epic Games客户端点击"库"选项,在引擎版本的下拉选项中启动已安装的虚幻引擎 从客户端启动虚幻引擎 也可以通过桌面的快捷方式启动虚幻引擎 打开 ...

  3. MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)

    属性页对话框包括向导对话框和一般属性页对话框两类,上一节讲了如何创建并显示向导对话框,本节将继续介绍一般属性页对话框的创建和显示. 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的.将上 ...

  4. SAP PM 入门系列 - IL03显示Function Location主数据

    SAP PM 入门系列 - IL03显示Function Location主数据 在SAP系统中,所有需维护的设备,都必须安装在功能位置上. 功能位置是按层次结构组织的. 低层次的功能位置是一个地点的 ...

  5. C#游戏开发快速入门 2.1 构建游戏场景

    C#游戏开发快速入门 2.1  构建游戏场景 如果已经计划好了要编写什么样的游戏,在打开Unity以后,要做的第一件事情就是构建游戏场景(Scene).游戏场景就是玩家游戏时,在游戏视图中看到的一切, ...

  6. 「Unity2D」使用Unity创建一个2D游戏系列-9

    菜单选项 - 载入和重启游戏 本文由泰然教程组成员 betterdenger 翻译,原文请参阅「Menus - loading and restarting the game」 我们已经完成了我们游戏 ...

  7. 虚幻4游戏菜单功能的实现

    最近有一个一直想要做的东西,就是游戏的开场动画,用C4D可以完成材质灯光以及摄像机运动剪辑这一块,但是建模却不是我的强项,搞了很久也没有什么结果.今天给大家发个福利,今天来学习一下游戏菜单的编辑,本来 ...

  8. Cocos2d-x 3.x学习笔记:猩先生带你打飞机(二)素材准备与游戏菜单场景

    注:那个,秉着敬业爱业的精神,代码我会尽量解释清楚和一些路上捡的心得体会外加一堆废话(这段也是废话!!!).如果没有解释的,那是我也没看懂,(╯3╰),百度去吧.倒是感觉这代码注释过多也是影响了代码的 ...

  9. bootstrap项目实例_Vue.js 项目实践——创建记忆卡片游戏

    作者:Jiawei Pan 转发链接:https://mp.weixin.qq.com/s/VXPD2p7q2S3yR9I7lzAkfw 前言 如果你刚开始学习 Vue,想巩固基础知识,那么你可以试试 ...

最新文章

  1. 浅谈网络爬虫中广度优先算法和代码实现
  2. python导入excel文件-python使用xlrd模块读写Excel文件的方法
  3. BZOJ 4388 [JOI2012春季合宿]Invitation (线段树、二叉堆、最小生成树)
  4. 面经系列 | Python,数据结构,神经网络
  5. SAP Fiori Service Modeler
  6. Android 系统(137)---android打包解包boot.img,system.img
  7. java swing 字体_Java Swing界面编程(4)---获取本地字体
  8. 技术人如何加速成长?提升你的思维和学习方式
  9. win10下, ColorPix取色器错位 指针偏移问题 解决方法
  10. [填坑]QT信号与槽机制注意事项
  11. Field userDao ....service.impl...'com.lzj.springcloud.dao.UserDao' that could not be found
  12. linux 配置生效的命令,Linux如何让修改的配置生效?
  13. java代理模式教你中间商赚差价
  14. CES 2017 DAY1:自动驾驶延续昨日热潮,其他产品更强调实用
  15. C#/.NET 通过代码打开浏览器
  16. AVX-512指令的前世今生
  17. 服务器虚拟机如何连接显示器,Windows 10:如何在VMware虚拟机上使用双显示器
  18. java全栈系列之JavaSE-面向对象(抽象类)041
  19. python中for无限循环_循环-在Python中从1循环到无穷大
  20. 这场峰会,让客户运营不再Hard

热门文章

  1. 历时将近半年的春招,以拿到网易offer结束,在此分享一下我的面经!
  2. awx文件解析_9awx.com
  3. [渗透]网站劫持分析与验证方法总结
  4. PHP MySQL饼状图 3d_Highcharts 饼状图(结合PHP、Mysql)
  5. 被通知一个月后离职,我改了重要项目里的代码注释
  6. zstack流程梳理与串口事件详解及zigbee调试助手实现细节
  7. android 判断首字母,Android 汉字转拼音首字母【原创】
  8. POI百万级大数据量EXCEL导出
  9. 记录maskrcnn训练:训练集制备、tensorflow+keras包安装、gpu运行推荐组合、soft-nms使用
  10. 花6000报了测试培训班,3个月后我成功“骗”进了腾讯,月薪拿17k