虚幻引擎(UE5)-大世界分区WorldPartition教程(四)

文章目录

  • 前言
  • 一、Data Layers的使用
    • 1.添加Actor到Data Layers
    • 2.运行时处理
  • 总结


上一篇:虚幻引擎(UE5)-大世界分区WorldPartition教程(三)

前言

Data Layers(UE4中叫Layers)用于将Actor划分到不同的Layer中,通过在编辑器和运行时激活和停用某些数据层,有条件地加载世界数据来组织大世界,前面提到的划分Cell是对WP关卡的横向划分,DataLayer是对WP关卡的纵向划分

该系统提供了一种对资源进行分组管理的方式,比如可以将建筑放到一个Layer中,将植被放到另一个Layer中,并且在编辑和Gameplay层都可以操作这个Layer,这不但方便了编辑管理世界,而且开发人员也可以在Gameplay层做一些比较有趣的玩法,比如白天和黑夜系统,荒野和城市互换等


提示:以下是本篇文章正文内容

一、Data Layers的使用

1.添加Actor到Data Layers

再上方工具栏中找到 Window->World Partition->Data Layers Outliner,然后在Data Layers Outliner中右键创建新的DataLayer

在这里插入图片描述
在这里插入图片描述
新建DataLayer后在面板中的数据层资产中 创建数据层:
在这里插入图片描述
在这里插入图片描述
然后在Actor的Details面板中为Actor指定Data Layers:
在这里插入图片描述
这里需要注意的是,Data Layers只有在编辑WP关卡时才生效,如果是普通关卡,需要像UE4那样在Layers中添加

在这里插入图片描述

这个时候返回数据层面板中就可以根据策略去加载了,可以控制初始显示和隐藏等等,也能通过蓝图去控制显示方式。

2.运行时处理

Data Layers数据是由UDataLayerSubsystem负责管理的,具体处理如下:

前后端分开:

void UWorldPartitionStreamingPolicy::UpdateStreamingState()
{//前后端对Cells处理的逻辑分开if (NetMode == NM_Standalone || NetMode == NM_Client || AWorldPartitionReplay::IsEnabled(World)){  //前端对StreamingCells的处理,GetStreamingCells会处理DataLayer的Cellif (WorldPartition->IsInitialized()){WorldPartition->RuntimeHash->GetStreamingCells(StreamingSources, FrameActivateCells, FrameLoadCells);}}else{//后端对SteamingCells的处理,这里会处理归属DataLayer的Cellconst UDataLayerSubsystem* DataLayerSubsystem = WorldPartition->GetWorld()->GetSubsystem<UDataLayerSubsystem>();//处理不属于DataLayer的Cells和以及归属于状态为Activate的DataLayer里的Cells,放入ActivateStreamingCells中WorldPartition->RuntimeHash->GetAllStreamingCells(ActivateStreamingCells, /*bAllDataLayers=*/ false, /*bDataLayersOnly=*/ false, DataLayerSubsystem->GetEffectiveActiveDataLayerNames());//只处理DataLayer中的Cells,并放入LoadStreamingCells中if (DataLayerSubsystem->GetEffectiveLoadedDataLayerNames().Num()){WorldPartition->RuntimeHash->GetAllStreamingCells(LoadStreamingCells, /*bAllDataLayers=*/ false, /*bDataLayersOnly=*/ true, DataLayerSubsystem->GetEffectiveLoadedDataLayerNames());}}
}

前台处理部分:

bool UWorldPartitionRuntimeSpatialHash::GetStreamingCells(const TArray<FWorldPartitionStreamingSource>& Sources, UWorldPartitionRuntimeHash::FStreamingSourceCells& OutActivateCells, UWorldPartitionRuntimeHash::FStreamingSourceCells& OutLoadCells) const
{//先拿到当前世界所有的DataLayersconst UDataLayerSubsystem* DataLayerSubsystem = GetWorld()->GetSubsystem<UDataLayerSubsystem>();//如果没有StreamingSource的话,处理所有的StreamingGrid中的AlwaysLoaded Cells,if (Sources.Num() == 0){for (const FSpatialHashStreamingGrid& StreamingGrid : StreamingGrids){if (!StreamingGrid.bClientOnlyVisible || bShouldConsiderClientOnlyVisible){/*这里处理了归属于DataLayerSubsystem的Cell,具体处理逻辑:1.如果不归属于DataLayer且被设置为IsAlwaysLoaded的Cell和归属于DataLayer且它被设置Activated的Cell被放入OutActivateCells中2.如果归属于DataLayer且它被设置Loaded的Cell被放入OutLoadCells中*/StreamingGrid.GetAlwaysLoadedCells(DataLayerSubsystem, OutActivateCells.GetCells(), OutLoadCells.GetCells());}}}else{//获取所有基于StreamingSource的Cellfor (const FSpatialHashStreamingGrid& StreamingGrid : StreamingGrids){if (!StreamingGrid.bClientOnlyVisible || bShouldConsiderClientOnlyVisible){/*这里会根据StreamingSource设置的形状(这个可以在组件中设置Shapes,默认情况是用以StreamingSource作为圆心,以Grid的LoadingRange作为半径构成圆)来判断是否与Cell相交,具体逻辑:1.首先根据传入的Coords,获取该坐标出的Cell,并GetBuounds2.判断是否相交,具体逻辑在FSquare2DGridHelper::FGrid2D::ForEachIntersectingCells中,这里会涉及到Cell的划分3.如果不归属于DataLayer且被设置为IsAlwaysLoaded的Cell和归属于DataLayer且它被设置Activated的Cell被放入OutActivateCells中4.如果归属于DataLayer且它被设置Loaded的Cell被放入OutLoadCells中5.调用GetAlwaysLoadedCells方法,如前所述,不累述*/StreamingGrid.GetCells(Sources, DataLayerSubsystem, OutActivateCells, OutLoadCells);}}}
}

如果是要在Gameplay中使用DataLayer的话调用UDataLayerSubsystem::SetDataLayerRuntimeState方法即可,大家可以自己尝试一下

总结

其中总的来说Data Layers实际上就是UE4中的Layers系统的Puls版,它可以方便的实现同个世界的不同变体,不仅方便编制者管理复杂的世界,同时也能在Gameplay中实现有趣的玩法以上就是今天要讲的内容

到此虚幻引擎(UE5)-大世界分区WorldPartition教程暂时完结了 To be Continued …

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5使用MetaHuman构建超现实的角色

使用免费的MetaHuman创造者应用程序为虚幻构建超现实的角色。 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;48.0 KHz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:1.66 GB 含课程文件|时长:1h 49…

虚幻引擎5改变了游戏,并与Perforce原生集成

游戏发展|版本控制 作者&#xff1a;Ryan L Italien 虚幻引擎是当下流行的游戏引擎之一。虽然很多团队喜欢UE4&#xff0c;但虚幻引擎5 (UE5)的抢先版本包含了一些期待已久的改进(加上一些令人惊叹的新功能)。 这篇文章将分析我们为什么对虚幻引擎 5 感到如此兴奋。此外&…

UE5 最新动态虚幻引擎全新版本引爆互联网

自 1998 年上市以来&#xff0c;虚幻引擎一直是顶级游戏开发工具之一。一些史上最大型游戏 —《杀出重围》和《生化奇兵》系列、《火箭联盟》、《堡垒之夜》等等 — 均使用该引擎的不同迭代版本进行构建。 随着电影和电视行业日益认识到虚拟引擎的作用&#xff0c;甚至在游戏业…

UE4 回合游戏项目 22- 控制新角色

在上一节&#xff08;UE4 回合游戏项目 21- 添加多种类型的敌人&#xff09;基础上新添加一个玩家角色 效果&#xff1a; 步骤&#xff1a; 1.打开进阶游戏资源&#xff0c;解压“回合迁移_第七节&#xff08;只是新人物包&#xff09;” 2.解压后双击打开工程 3.选中“ziyuan…

腾讯发布 3D 虚拟场景自动生成解决方案,用 AIGC 助力游戏开发提效

3月28日记者获悉&#xff0c;腾讯 AI Lab在2023游戏开发者大会&#xff08;Game Developers Conference&#xff09;上发布了自研的3D游戏场景自动生成解决方案&#xff0c;通过AIGC技术&#xff0c;帮助开发者在极短的时间内打造出高拟真、多样化的虚拟城市场景&#xff0c;大…

在虚幻引擎5中构建你的首款游戏 - 09 - 压力板和开关门

在虚幻引擎5中构建你的首款游戏 - 09 - 压力板和开关门 前言介绍: 原版地址: << [功能亮点]在虚幻引擎5中构建你的首款游戏(官方字幕)_哔哩哔哩_bilibili >> << https://www.bilibili.com/video/BV1M34y1x7tc >> 官网地址: << Your First Game I…

如何使用UE5新功能 “打包型关卡Actor” 实现场景的性能优化

如何使用UE5新功能“打包型关卡蓝图”实现场景性能优化 内容分为&#xff1a; 简介实操优化结果展示 看不懂原理看看实操就大概就能明白 什么是“打包型关卡蓝图” “打包型关卡蓝图”是UE5新功能 世界分区&#xff08;World Partition&#xff09; 的一部分 但 不依赖于项目…

在虚幻引擎5中构建你的首款游戏 - 10[完] - 特效音效镜头震动打包

在虚幻引擎5中构建你的首款游戏 - 10[完] - 特效&音效&镜头震动&打包 前言介绍: 原版地址: << [功能亮点]在虚幻引擎5中构建你的首款游戏(官方字幕)_哔哩哔哩_bilibili >> << https://www.bilibili.com/video/BV1M34y1x7tc >> 官网地址: &…

UE5的项目建立及UE5(虚幻引擎5)个人视角移动按键操作及运行项目/day.2

1.UE5的项目建立 进入UE5的界面就是这样&#xff1a; 由于我们是刚下载的&#xff0c;“最近打开的项目”是没有项目打开的所以我们需要新建一个新的项目。 注意&#xff0c;项目位置最好是英文的&#xff0c;否则可能会出错。&#xff08;可能不会&#xff0c;毕竟很多人都说有…

在虚幻引擎5中构建你的首款游戏 - 01 - 介绍

在虚幻引擎5中构建你的首款游戏 - 01 - 介绍 1. 教程介绍 本系列是针对 Epic开发者社区 的教程 << Your First Game In Unreal Engine 5 | Epic Developer Community (epicgames.com) (您在虚幻引擎 5 中的第一款游戏) >> 的学习笔记. 在官网上的视频是没有中文字…

在虚幻引擎5中构建你的首款游戏 - 06 - 游戏模式相机运动按键

在虚幻引擎5中构建你的首款游戏 - 06 - 游戏模式&相机&运动&按键 前言介绍: 原版地址: << [功能亮点]在虚幻引擎5中构建你的首款游戏(官方字幕)_哔哩哔哩_bilibili >> << https://www.bilibili.com/video/BV1M34y1x7tc >> 官网地址: <&…

在虚幻引擎5中构建你的首款游戏 - 07 - 角色模型和动画

在虚幻引擎5中构建你的首款游戏 - 07 - 角色模型和动画 前言介绍: 原版地址: << [功能亮点]在虚幻引擎5中构建你的首款游戏(官方字幕)_哔哩哔哩_bilibili >> << https://www.bilibili.com/video/BV1M34y1x7tc >> 官网地址: << Your First Game I…

在虚幻引擎5中构建你的首款游戏 - 08 - AI控制和道具

在虚幻引擎5中构建你的首款游戏 - 08 - AI控制和道具 前言介绍: 原版地址: << [功能亮点]在虚幻引擎5中构建你的首款游戏(官方字幕)_哔哩哔哩_bilibili >> << https://www.bilibili.com/video/BV1M34y1x7tc >> 官网地址: << Your First Game In …

AIGC时代,如何妙用chatgpt进行酣畅淋漓的创作

生成式人工智能AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;是人工智能1.0时代进入2.0时代的重要标志。 “ChatGPT"代表"Chat-based GPT”&#xff0c;是指一种基于对话模式的生成式预训练模型。它是由OpenAI开发的&#xff0c;GPT&…

火星人学习第一周——虚幻引擎基础应用笔记

目录 一、导入虚幻前资产须要遵守的规范二、3DMax 软件基础操作三、虚幻引擎基础虚幻资产分类虚幻基本操作虚幻坐标系虚幻光光源分类光源的移动特性固定光源光照模式分类构建光照间接光照缓存重要光照体积 虚幻材质半透明材质&#xff1a;玻璃材质&#xff1a;Fresnel 节点Lerp…

在虚幻引擎5中构建你的首款游戏 - 03 - 模型和材质蓝图

在虚幻引擎5中构建你的首款游戏 - 03 - 模型和材质&蓝图 前言介绍: 原版地址: << [功能亮点]在虚幻引擎5中构建你的首款游戏(官方字幕)_哔哩哔哩_bilibili >> << https://www.bilibili.com/video/BV1M34y1x7tc >> 官网地址: << Your First G…

虚幻引擎4艺术大师 - 中文版免费分享

本文章由cartzhang编写&#xff0c;转载请注明出处。 所有权利保留。 文章链接&#xff1a; http://blog.csdn.net/cartzhang/article/details/52512622 作者&#xff1a;cartzhang 记录&#xff1a; 2019-03-12 更新网盘地址 之前参与翻译的两本虚幻4蓝图的两本书籍&#xff0…

虚幻引擎5亮点一览,下载学习资源汇总

虚幻引擎5是虚幻引擎的下一个重大升级版&#xff0c;为次世代游戏、实时可视化和沉浸式互动体验进行了重新设计和改良。此版本将为游戏开发者和各行各业的创作者提供更自由、更具有保真度和灵活度的次世代实时3D内容和体验。下面就让我们一起来了解一下UE5抢先体验版本新功能和…

虚幻引擎5.1现已发布!

我们很高兴地宣布&#xff0c;虚幻引擎5.1现已推出。在这个版本中&#xff0c;我们以虚幻引擎5推出的开创性功能集为基础&#xff0c;将引擎的健壮性和效率提升到了新高度&#xff0c;使它能够被各行各业的创作者广泛使用。 作为这项工作的一部分&#xff0c;我们一直在针对不同…

虚幻引擎游戏技能系统文档

GASDocumentation 通过一个简单的多人示例项目分享我对UE4中GAS插件的理解。 由于这不是官方文档&#xff0c;示例项目和我都不是来自Epic Games。因此我并不能保证描述的准确性。&#xff08;译注&#xff1a;本人才疏学浅&#xff0c;还请大家多多指教&#xff09; 这个文档…