IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 学习UE4的WorldComposition基础 -> 正文阅读

[游戏开发]学习UE4的WorldComposition基础

目标

结合官方文档以及实践,学习WorldComposition的一些基础知识。

0. 资源准备

为了实验,先准备一些关卡:

新建一个文件夹用于容纳接下来的测试关卡,比如文件夹名叫 TestWC

以 Default 为模板创建关卡:
在这里插入图片描述
这个关卡将作为主关卡,保存为 TestWC/main

接着,新建一个文件夹 TestWC/SubLevels 用于存放所有的子关卡。

然后,再次新建关卡。但是将地板之外的Actor全部删除。然后将地板的X位置移动1000,保存为TestWC/SubLevels/l1。同样的方式移动2000保存为 l2、移动3000保存为l3

1. 启用WorldComposition

打开main关卡,打开 World Settings面板。
在这里插入图片描述
然后在 World Settings面板中启用 Enable World Composition
当启用时可以看到提示:
在这里插入图片描述
意思是:
在这里插入图片描述
点击确定后,将会把创建的 l1l2l3 作为main的子关卡。

2. 关卡流送(Level Streaming)的相关概念

正如官方文档所说:

The Level Streaming feature makes it possible to load and unload map files into memory as well as toggle their visibility during play. This makes it possible to have worlds broken up into smaller chunks so that only the relevant parts of the world are taking up resources and being rendered at any point. If done properly, this allows for the creation of very large, seamless games that can make the player feel as if they are playing within a world that dwarfs them in size.

关卡流送功能可以将地图文件加载到内存中,或者从内存中卸载,并在游戏运行时切换地图的可见性。 这样一来,场景便能拆分为较小的地图块,而只有相关部分才会占用资源并被渲染。正确设置后,开发者便能创建大型、无缝衔接的游戏场景,让玩家仿佛置身于"大世界"之中。

World Composition is a specific form of level streaming used to create large worlds. Levels are arranged in a planar grid, and streamed in as the player approaches them.

而 WorldComposition 是一种特定形式的关卡流送,用于创建大世界。关卡排列在平面网格中,并随着玩家的靠近而流入。


在主关卡中打开Levels面板可以看到子关卡的各种状态:
(可参见管理多个关卡 | 虚幻引擎文档来了解更多内容)
在这里插入图片描述
比如当前的main之下就有三个子关卡:
在这里插入图片描述
关卡之间的状态有所不同:

加载 & 未加载

关卡名字处于灰色的时候表示未加载(比如当前 l3 关卡没有被加载)。
关卡名字处于白色的时候表示已经加载了。

可以右键关卡进行加载和卸载:
在这里插入图片描述

The Persistent Level(持久关卡、主关卡)& Streaming Levels(流送关卡、子关卡)

只有一个 Persistent Level,即主关卡,它将会一直加载,无法卸载。(比如当前 main 中的内容就无法被卸载)
子关卡,又称为 Streaming Levels,将根据不同的方式比如 WorldComposition 来进行加载和卸载。(比如当前的 l1、l2、l3)

当前关卡(Current Level)

“当前关卡”的名字会是蓝色,当添加一个Actor时就会加入到这个关卡中。(比如现在就是 l2)
同一时间的当前关卡只有一个。当前关卡必须是已加载的。

可以右键将一个关卡设置为当前关卡:
在这里插入图片描述

所选择关卡

黄色背景表示此关卡被选择:
在这里插入图片描述

3. WorldComposition小地图

点击Levels面板的按钮可以进入WorldComposition小地图
在这里插入图片描述
可以看到所有已加载的关卡的缩略图
在这里插入图片描述
官方文档中可以找到对其界面的介绍:
在这里插入图片描述

编号名字说明
1层(Layers)单击图层名称来切换该图层的过滤,或单击 + 来创建新图层。
2比例尺比例尺
3世界场景原点(World Origin)世界场景原点的当前位置。
4当前关卡(Current Level)当前关卡的名称。
5鼠标光标位置鼠标光标的当前世界场景位置。
6框选以世界场景单位显示的选取框的大小。
7世界场景大小世界场景的大小,计算为所有关卡边界框的总和。

4. Layer(层)——决定流送距离

默认情况下,所有关卡被分配给 Uncategorized(未分类) Layer。Layer 存储了有关流送距离的信息(鼠标悬停时可看到距离)
在这里插入图片描述

因此分配给特定 Layer 的关卡会继承这个流送距离。分配给“禁用流送距离”的 Layer 的关卡将从距离流送中排除(不过可以用蓝图来控制流送)。每个关卡一次只能分配给一个 Layer。

单击现有 Layer 名称右侧的+按钮可以创建新 Layer。

Layer 无法删除或编辑,因此如果想更改流送距离设置,需要创建具有想要的设置的新 Layer 并为其分配到对应的关卡。下次打开关卡时,会自动删除未分配关卡的 Layer。

单击小地图上的 Layer 名称,可以过滤掉除此之外的其他层。你可以使用 Control+鼠标单击来选择多个Layer。如果没有任何 Layer 选择,则不执行过滤。


接下来实践一下。

新建一个层 test1,设置距离为1000:
在这里插入图片描述
现在,可以在两个Layer之间进行切换过滤:
在这里插入图片描述
右键关卡可以将其分配给其他Layer:
在这里插入图片描述
现在将 l1l2l3 都分配给test1这个层。

然后点Play:
(为了测试,在main中间放了一条方块作为标记)
在这里插入图片描述
可以看到逐渐流入和流出的关卡。而且能观察出其判断的中心应该是相机而非角色(至于流送距离是如何精确计算的,可能需要看代码中的逻辑了)

5. 子关卡细节面板

点击 Levels 面板中的按钮,可以打开所选关卡的细节面板:
在这里插入图片描述
其中可以指定这个关卡块的位置等信息,以及LOD设置。详见 世界场景构成用户指南 | 虚幻引擎文档

另外,这个面板显示的所选关卡的信息,如果所选关卡有多个,则就会批量地修改。

6. 控制台命令

输入stat levels
可在运行时看到关卡地加载状态:
在这里插入图片描述
详见Stat命令 | 虚幻引擎文档,其中指出不同颜色的含义是:

颜色说明
绿色关卡已加载并可见。
红色关卡已卸载。
橙色关卡正在变成可见的过程中。
黄色关卡已加载,但不可见。
蓝色关卡已卸载,但仍驻留在内存中,当发生垃圾回收时将清除它。
紫色关卡是预加载的。
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:37:40  更:2021-12-15 18:39:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:31:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码