【UE】制作系统设置功能

目录

效果

步骤

一、准备工作

二、创建画面设置界面

三、应用画面设置

四、保存画面设置 

五、运动模糊与垂直同步

六、窗口化与分辨率

6.1 分辨率 

6.2 窗口化


效果

步骤

一、准备工作

新建一个工程,创建游戏模式和玩家控制器,这里分别命名为“MyGameMode”和“MyPlayerController”

打开创建的游戏模式,在类默认值中设置玩家控制器为“MyPlayerController”

在世界场景设置中设置游戏模式重载为“MyGameMode”

打开“MyPlayerController”,设置显示鼠标光标

二、创建画面设置界面

1. 创建一个控件蓝图,这里命名为“SystemSettings”,表示系统设置界面

打开“SystemSettings”,添加一个按钮,我们希望该按钮点击后就弹出系统设置界面

2. 在玩家控制器中我们设置一开始就显示系统设置按钮

3. 创建一个控件蓝图,这里命名为“画面设置主界面”

打开“画面设置主界面”,先添加如下控件

4. 回到控件蓝图“SystemSettings”中,设置按钮点击后打开“画面设置主界面”

5. 接下来创建一个通用的下拉列表控件蓝图。

创建一个控件蓝图,这里命名为“通用下拉列表”

打开“通用下拉列表”,设置填充屏幕为“所需”

添加文本控件、组合框

其中在组合框中设置4个默认选项和默认选中的选项

6. 回到“画面设置主界面”中,将“通用下拉列表”添加到“滚动框”中

此时运行效果如下

7. 回到“通用下拉列表”中,添加一个文本类型的变量,命名为“修改的内容”,这里用于替换文本控件的显示内容

设置该变量为可编辑实例

将文本控件的内容绑定变量“修改的内容”

在图表中,设置事件预构造的时候就设置文本控件的内容为变量“修改的内容”的值

8. 将控件蓝图“通用下拉列表”添加到别的控件蓝图中

设置一下“修改的内容”的值

9. 回到“通用下拉列表”,当下拉框选项变化时,打印看一下选定的索引是否变化

添加一个修改画面等级设置的事件分发器 

给该事件分发器添加一个整数类型的变量,变量类型设置为整型

当下拉框选项发生变化后调用该事件分发器

10. 回到“画面设置主界面”中,复制几个“通用下拉列表”,分别用于设置视图距离、抗锯齿、后期处理、阴影、纹理、特效、植物、着色

再添加一个整体设置

选中下拉列表,添加修改画面等级的事件

添加应用和关闭按钮

三、应用画面设置

当下拉选项变化时设置对应的游戏用户设置,点击应用时就应用设置,点击关闭就关闭界面

此时运行后可以看到设置改变视图距离是有效果的

完整设置如下

四、保存画面设置 

如果想下次开启游戏后还是能够使用上次的画面设置结果,我们就还需添加保存画面设置的功能。

首先添加一个保存按钮。

设置保存功能

此时运行有个问题就是当我们关闭界面后,下拉框选项又恢复默认选项,因此我们需要在界面构造时获取当前的设置,然后设置下拉框选项。

此时运行可以看到即使关闭再创建界面,下拉框还是能记住用户选项

界面构造时的完整逻辑:

当用户进行整体设置时,其它选项也需要一起改变

效果如下

五、运动模糊与垂直同步

1. 新建一个控件蓝图,这里命名为“通用勾选” 

从“通用下拉列表”中复制控件到“通用勾选” 

设置屏幕上所需

将下拉框改为勾选框

添加一个文本类型变量

设置为可编辑实例,默认值为“设置的内容”

在控件蓝图预构造后设置文本控件的内容为变量“文本内容”

添加一个事件分发器

事件分发器添加一个输入

当勾选状态变化时调用事件分发器

2. 打开“画面设置主界面”,将通用勾选拖入,分别设置文本内容为运动模糊和垂直同步

当勾选框状态变化时逻辑如下

在事件构造后需要获取运动模糊和垂直同步状态,从而设置勾选框的状态

六、窗口化与分辨率

6.1 分辨率 

在“画面设置主界面”中添加两个下拉列表,分别命名为“分辨率设置”和“窗口化设置”

由于分辨率的下拉选项有所不同,因此需要在控件蓝图构造时设置所有的下拉选项,并且设置好默认选项

当切换选项时设置屏幕分辨率

6.2 窗口化

在控件蓝图“画面设置主界面”中添加一个变量,这里命名为“窗口模式选项列表”

设置变量类型为“E窗口模式”、数组,再添加全屏、窗口化全屏和窗口化三个元素

设置窗口化下拉框包含的三个选项名称

选择窗口化选项的响应逻辑:

运行效果如下

参考视频:

https://www.bilibili.com/video/BV1Vm4y1m7W5/?spm_id_from=333.999.0.0&vd_source=36a3e35639c44bb339f59760641390a8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/453484.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录 | 数组 01】二分查找

文章目录 1.二分查找1.1题目1.2思路(核心:区间的定义)1.3左闭右闭1.4左闭右开1.5总结 1.二分查找 1.1题目 704.二分查找—力扣题目链接 题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 …

centos7 yum 配置

centos7 yum 配置 重置yum更新 centos 镜像源http://mirrors.aliyun.com/centos/7Server/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found 重置yum # 备份 sudo cp /etc/yum.repos.d/* /etc/yum.repos.d.bak/ # 删除 rm -rf /etc/yum.repos.d/*# 查看版…

【数据结构取经之路】快速排序及其优化

目录 简介 快速排序的实现步骤 快排的时间复杂度 快排的空间复杂度 霍尔法 证明 key > x left从key的位置出发的原因 霍尔法代码 (递归) 挖坑法 流程及其展开图 代码 (递归) 前后指针法 前后指针法的步骤及其动图 代码(递归) 快排的优化 一、三数取中 二、…

2024年泰迪智能科技合作伙伴战略大会暨产教融合实训基地落成仪式圆满结束

2024年泰迪智能科技合作伙伴战略大会 暨产教融合实训基地落成仪式 3月6日,2024年泰迪智能科技合作伙伴战略大会暨产教融合实训基地落成仪式在泰迪智能科技产教融合实训基地举行,本次合作伙伴战略大会围绕“龙腾山海,共赴新程 ”主题开展&…

【算法】链表手撕代码

目录 前言 1. 在原有的自定义链表类 Linked 的基础上,添加新的 “节点添加”方法 addNode(Node node) 测试用例 测试结果 2. 在自定义链表类的基础上,使用双重循环“强力” 判断两个节点是否发生相交 测试用例 测试结果 3. 在自定义链表类的基础…

运维自动化之——Ansible

目录 一、自动化运维 1、通过xshell实现自动化运维 2、Ansible简介 3、Ansible特点及优势 4、Ansible核心程序 5、Ansible工作原理及流程 6、部署Ansible自动化运维工具 7、Ansible常用模块 ①ansible命令模块 ②command模块 ③shell模块 ④cron模块 ⑤user模块 …

idea配置自定义注释模版和其他模板

项目场景: idea配置自定义模版 自定义注释模版其他模板,包括syso快捷键,swith快捷键等 自定义注释模版 1、File and Code Templates 第一种类创建完后头部自动生成注释模板 打开idea,选择 Settings--> Editor--> File a…

性能测试-数据库

一、数据库事务机制 ACID描述 1、原子性Atomicity:事务通常由多个语句组成。原子性保证将每个事务视为一个“单元”,该事务要么完全成功,要么完全失败 2、一致性Consistency:“一致”是指数据库中的数据是正确的,不存…

数据结构之单链表及其实现!

目录 ​编辑 1. 顺序表的问题及思考 2.链表的概念结构和分类 2.1 概念及结构 2.2 分类 3. 单链表的实现 3.1 新节点的创建 3.2 打印单链表 3.3 头插 3.4 头删 3.5 尾插 3.6 尾删 3.7 查找元素X 3.8 在pos位置修改 3.9 在任意位置之前插入 3.10 在任意位置删除…

深入解析CAS的原理机制

一、基本概述 1.1 引入背景 例:i。假设由线程A和B需要对i进行加1的操作。线程A和线程B会分别从主内存中读取i值到自己的工作内存中。原本相加之后的值为3,但线程A和线程B分别加1后将值刷新到主内存,发现主内存的值为2,出现错误。…

学c还行,学Python很累,还有其他语言适合我吗?

学c还行,学Python很累,还有其他语言适合我吗? 在开始前我分享下我的经历,我刚入行时遇到一个好公司和师父,给了我机会,一年时间从3k薪资涨到18k的, 我师父给了一些 电气工程师学习方法和资料&a…

新建项目module,但想归到一个目录下面

1. 想建几个module, 例如 component-base-service,component-config-service, 但是module多了会在CloudAction下面显示很多目录, 所以想把它们归到components模块下面去, 类似于下图的效果 2. 创建过程 右击CloudAction 新建 module -> 选maven类型 输入components, 建成后删…

【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列二:Fast R-CNN图文详解

RCNN算法详解:【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一:R-CNN图文详解 学习视频:Faster RCNN理论合集 Fast RCNN 概念辨析 1. RoI 在Fast R-CNN中,RoI(Region of Interest,感兴…

Spring多线程事务处理

一、背景 本文主要介绍了spring多线程事务的解决方案,心急的小伙伴可以跳过上面的理论介绍分析部分直接看最终解决方案。 在我们日常的业务活动中,经常会出现大规模的修改插入操作,比如在3.0的活动赛事创建,涉及到十几张表的插入…

使用DateUtil工具类偏移日期

使用DateUtil工具类偏移日期 一、依赖二、源码三、示例代码 一、依赖 <!--工具依赖--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>二、源码 …

Python常用图片数据方法

文章目录 1. 常用图片数据类型2. 图片的显示2.1 plt.imshow()2.2 使用 turtle 来绘制图片 3.图片ndarray数据的常用切片操作使用 cv2 来读取图片打印数据R G B 通道的获取BGR 转成 RGBcv2 不支持中文路径的解决方法 4 PIL.Image 转成 QImage 或 QPixmap 1. 常用图片数据类型 使…

Android基础开发-通讯录的添加和查询

案例&#xff1a;往手机通讯录添加信息&#xff0c;输入姓名和手机号。 保存的手机的表&#xff1a;一共有两个&#xff0c;一个是主表&#xff0c;提供一个联系人id&#xff0c;另外是辅表&#xff0c;提供id对应的手机号和姓名。 普通操作&#xff1a;一个表一个表的添加 …

【黑马程序员】python函数

文章目录 函数什么是函数为什么学习函数函数定义函数的传入参数函数的返回值返回值基础None返回值 函数说明文档函数的嵌套调用定义代码示例 全局变量和局部变量全局变量global变量局部变量 函数综合案例 函数 什么是函数 组织好的&#xff0c;可重复使用的、用来实现特定功能…

【每日八股】Java基础经典面试题2

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;适合在学Java基础的小白…

设计模式系列之-策略模式(优化过多代码if…else)

首先解释下什么策略模式 如下图&#xff1a; 简而言之&#xff1a;算法的使用与算法的实现分离开来 想象有一个开关按钮&#xff0c;每次按下去都可以切换不同的灯光模式&#xff08;例如&#xff1a;强光、柔光、闪烁&#xff09;&#xff0c;这里的每种灯光模式就是一个策略…