首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【虚幻UE5教程】进阶篇——关卡流送(Level Streaming)

  • 25-03-07 06:26
  • 2538
  • 12806
blog.csdn.net

【虚幻UE5教程】进阶篇——关卡流送(Level Streaming)

UE


往期目录

  • 第一章 基础知识
    • 第一节 编辑器页面
    • 第二节 搭建关卡
    • 第三节 初识蓝图

  • 进阶篇
    • 关卡流送(Level Streaming)

本文目录

  • 【虚幻UE5教程】进阶篇——关卡流送(Level Streaming)
    • 往期目录
  • 前言
  • 一、关卡
    • 1.1 持久关卡(Persistent Level)
    • 1.2 流送关卡(Stream Level)
  • 二、关卡(Levels)面板
    • 2.1 层级面板(Level Hierarchy)
    • 2.2 关卡下拉菜单
    • 2.3 细节面板(Level Details)
    • 2.4 上下文菜单
    • 2.5 面板设置
  • 三、关卡流送
    • 3.1 流送体积(Streaming Volumes)
    • 3.2 蓝图
  • 总结


前言

关卡流送(Level Streaming) 功能可以分块式地加载、显示关卡。将需要的关卡部分加载到内存中并渲染,不需要的关卡部分卸载。这样一来,场景就拆分为较小的地图块,并且只有相关部分才会占用资源并被渲染。

可以使用官方内容示例中 关卡流送(Level_Streaming) 关卡进行学习。
关卡示例


一、关卡

你总是拥有一个 持久关卡(Persistent Level) ,并且可以有一个或多个 子关卡/流送关卡(Stream Level)。
关卡

1.1 持久关卡(Persistent Level)

持久关卡 是永久拥有的关卡。你可以把它看作一个主关卡,用来管理加载或卸载其他子关卡。

1.2 流送关卡(Stream Level)

流送关卡 或 子关卡 将游戏整体中的内容拆分为多个,以供多个工作者同时修改或游戏场景动态加载。子关卡可以是 固定加载(Always Loaded) ,也可以通过 关卡流送体积 、 蓝图 或 C++代码 动态加载、卸载或流送。

二、关卡(Levels)面板

使用 关卡(Levels) 面板对关卡进行管理。在主菜单栏的 窗口(Window) 菜单中,点击 关卡(Levels) 打开面板。
关卡面板

2.1 层级面板(Level Hierarchy)

层级面板以列层级展示所有的关卡。
所有关卡

  • 当前关卡 用粗体蓝色文本表示,双击其他关卡可以将其切换为当前关卡。

  • 点击 眼睛 标志切换该关卡可视性。

  • 点击 灯泡 标志切换该关卡关照情景。

  • 点击 锁? 标志切换该关卡锁定情况。

  • 点击 蓝图 标志打开该关卡的关卡蓝图。

  • 点击 颜色框 更改关卡颜色。在关卡视口中 视口模式(View Mode) 菜单中,选择 Actor着色(Actor Coloration) > 关卡颜色(Level Color) 即可使关卡中Actor显示相应关卡颜色。
    请添加图片描述

2.2 关卡下拉菜单

点击面板左上角打开 关卡下拉菜单 。
菜单

  • 默认流送方法(Default Streaming Method) 可以设置关卡默认流送方法。

  • 创建关卡(Creat New) 将创建新的子关卡。

  • 添加关卡(Add Existing) 将弹出窗口,选择想要添加的关卡资产即可添加为子关卡。

  • 用选定Actor创建关卡(Create New with Selected Actors) 将目前选中的所有Actor从其原本关卡中拆分,放入新建关卡中。

  • 合并关卡(Merge) 将选定关卡合并到新关卡中,原关卡将删除。

2.3 细节面板(Level Details)

点击细节图标打开细节面板。
细节面板

  • 流送体积(Streaming Volumes) 内指定关卡流送体积,一个关卡可以指定多个流送体积,一个流送体积可以作用于多个关卡。

  • 初始加载与可视性(Initially …) 可以设置关卡是否初始就加载/可见。

  • 卸载请求间隔(Min Time Between Volume Unload Requests):卸载请求间隔规定了两次卸载请求之间的最少时间间隔。防止玩家在关卡边缘频繁进出,导致关卡频繁加载、卸载。

2.4 上下文菜单

右键某关卡打开 上下文菜单 。
右键菜单

  • 删除关卡(Remove Selected):删除选中的子关卡。

  • 改变流送方式(Change Streaming Method) 更改此设置。

    • 固定加载(Always Loaded):关卡将与持久关卡一同加载,和持久关卡同时变为可见状态。无视指定的流送体积域、蓝图或 C++ 的所有加载/卸载请求。次关卡分段不会流出,除非游戏变更持久关卡。这类关卡分段常用于将持久关卡中的常见内容拆分为多个"层",以便美术师同时协作工作而不会相互阻碍。

    • 蓝图(Blueprint):关卡通过 关卡流送体积(Level Streaming Volumes) 、 蓝图 或 C++代码 来动态加载、卸载或流送。

  • 选择Actor(Select Actors):选中关卡中包含的Actor。

  • 将选择移到关卡(Move Selected … to Level):将选中的Actor或植被(Foliage)移动到该关卡中。如果对象已包含在其他关卡中,将会从其他关卡中移除。

  • 选中流送体积(Select Streaming Volumes):选中该关卡指定的关卡流送体积。

2.5 面板设置

点击面板右上角 设置 菜单。
设置

  • 显示路径(Display Paths):将关卡名显示为关卡路径。
    显示路径

  • 显示Actor数(Display Actors Count):在关卡名后显示包含的Actor数。
    显示Actor数

三、关卡流送

3.1 流送体积(Streaming Volumes)

通过 关卡流送体积域 可轻松控制关卡流送。玩家视点处于体积中时,关卡加载;玩家视点处于体积外时,关卡卸载。如果一个关卡具有任何与之关联的流送体积,则该关卡的其他流送方法将无法正确工作。
基于体积域的关卡流送易于使用、易于修改。调整体积域的大小即可调整关卡加载/卸载行为。所有关卡流送体积都必须存在于 持久关卡 中。

  • 通过 体积(Volumes) > 关卡流送体积(Level Streaming Volume) ,即可向关卡中添加流送体积。
    添加流送体积

  • 在 关卡面板 的 关卡细节面板 中绑定流送体积。

  • 在细节面板中调整关卡流送体积处理关卡流送的方式。
    细节面板

    • 编辑器关卡视口中以框体显示流送体积,在细节面板中修改 缩放(Scale) 属性以更改体积大小。
      流送体积

    • 流送关卡(Streaming Levels) 显示受体积影响的关卡。

    • 仅限编辑器预可视化(Editor Pre Vis Only) 确定流送体积是否仅用于编辑器流送关卡预可视化。如果仅在编辑器中使用该流送体积,在游戏中使用其他流送方式,可以打开此设置。

    • 已禁用(Disabled):如果为真,则忽略流送体积。也用于禁用关卡流送体积而不将其与关卡分离,或者用于在蓝图和流送体积之间切换关卡流送的控制。

    • 流送使用(Streaming Usage) 确定体积的用途,例如控制加载、控制加载和可视性、控制可视性且在加载时阻塞主线程。

3.2 蓝图

关卡流送的关键函数为 加载流送关卡(Load Stream Level) 和 卸载流送关卡(Unload Stream Level)。
加载卸载

  • 使用关卡名称或资产引用指定需要加载/卸载的关卡。

  • 加载后可视(Make Visible After Load):设置是否加载后立即可视。

  • 阻塞(Should Block on …):在加载/卸载时暂时阻塞主线程,直到加载/卸载完成。

此外,获取流送关卡(Get Streaming Level) 函数可实现更为动态的流送行为。利用它访问实际的关卡流送对象后,即可修改和查询其状态。结合 创建实例(Create Instance) 函数,可以创建关卡分段的副本。 对这些副本应用变换和发送参数,即可生成程序化的世界场景,例如多种房间随机排布的地下城rogue地图。
获取关卡


总结

在这一节,我们学习关卡流送的基本逻辑与使用方法。使用关卡流送可以优化游戏性能、制作程序化生成地图,让游戏变得更加优秀。UE学习,与君共勉。

注:本文转载自blog.csdn.net的ChongYu重玉的文章"https://blog.csdn.net/YCEykr/article/details/140769854"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

134
游戏
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top