对于大型游戏MMORPG游戏或是3D街景(虚拟现实)还有大型无缝地图都需要地图啊,关卡动态加载的机制来达到让用户感觉自己一直是在漫游,而不会出现Loading(读条),卡界面等情况。当然除非是垮区域无法依靠关卡和关卡中之间的关系做处理。

     UnrealEngine4 作为一个多年处于世界前矛的商业引擎,自然而然也为大家考虑到这个这种硬性需求。UnrealEngine4 中的动态加载大概分为3种。
 
     首先需要明确下几点概念。因为再同学们信息会等的前提下才会更有利于理解和相互交流。好了,不瞎扯了进入正题。
 
     1.地图(Map):地图这个概念在UnrealEngine4中基本上所示虚拟出来。当然我们编译完一个场景后会保存到自己的工程目录下 如:XXXX\Content\Maps\  保存的文件名叫做.umap。一个工程下可以有很多很多.umap文件,但是我们需要注意到,我们在单独保存场景时编辑器都是基于Level操作的。代码中只有一个函数是关于地图[UEngine::LoadMap]。  如下图:
 

 
    2.关卡(Level):关卡这个概念应该是在UnrealEngine4最常用使用的,在ue4编辑器中还有一个单独Levels编辑器。  如下图:
 

 

 
    3.世界(World):World这个概念之前在UnrealEngine3中一直跟地图的概念差不多,World下面会有很多的Levels还有八叉树场景管理器,以及一些寻路啊,对Level和Actor的管理函数。当然现在也差不多,不过没有看见八叉树,多了一种LevelActor的类,SpawnActor中创建对象为"ConstructObject"之前创建对象另一个函数需要Outer和Owner的"DuplicationObject"。
 
 
言回正传:UnrealEngine4引擎提了我们有三种动态加载的方法,下面一一介绍。
 
一. 通过使用LevelStreamingVolume的方法:
 
    通过Modes窗口下的Volumes找到LevelStreamingVolume,拖动到编辑器中让它覆盖住同学们两个Level,调节LevelStreamingVolume的StreamingUsage属性(比如有加载后锁定,加载,加载后显示等)。
    当我们的Pawn进入到这个LevelStreamingVolume后关卡就会对应的加载啦。  如图:
 

 

 加载类型设置属性图例
 

二. 通过使用BluePrint的方法:
 
    通过打开关卡的Blueprints使用蓝图完成动态加载。那么在Blueprints中完成动态加载我们需要用到几个节点分别为 LoadStreamLevel和UnloadStreamLevel。 如图:
 
LoadStreamLevel节点

UnloadStreamLevel节点

    
    特别要注意的是LoadStreamLevel节点需要在MakeVisibleAfterLoad打勾,不然不会显示的呦。第二个暴露变量ShouldBlockonLoad打上勾会,不会被UnloadStreamLevel节点卸载(同学们自行按照需求选择呦)。还有一定要在Leves编辑器中把修改动态加载方法中的[总是加载]改成[蓝图]喔,不然通过Blueprints无法控制动态加载的。
 
 
三. 通过写代码的方式加载
 
    在需要切换动态加载关卡的时候,调用[UGameplayStatics::LoadStreamLevel]函数来加载想要使用的关卡。

大概流程是创建一个FStreamLevelAction,这个Action回去读暴露参数的包遍历所有Level关系找到指定关卡,然后ActivateLevel这个关卡激活的时候会有加载或者卸载关卡。

本文转自:52VR.com  Hololens http://www.52vr.com/article-764-1.html

虚幻4的关卡动态加载机制相关推荐

  1. 【Linux 内核】宏内核与微内核架构 ( 操作系统需要满足的要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )

    文章目录 一.操作系统需要满足的要素 二.宏内核 三.微内核 四.Linux 内核动态加载机制 一.操作系统需要满足的要素 电脑上运行的 操作系统 , 是一个 软件 ; 设备管理 : 操作系统需要 为 ...

  2. Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  3. unity 3D里有两种动态加载机制

    unity 3D里有两种动态加载机制: 一是Resources.Load: 一是通过AssetBundle: 其实两者本质上没有什么区别.Resources.Load就是从一个缺省打进程序包里的Ass ...

  4. Android apk动态加载机制的研究

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/22597587 (来自singwhatiwanna的csdn博客) 背景 问题 ...

  5. spi 动态加载、卸载_理解 ServiceLoader类与SPI机制

    对于Java中的Service类和SPI机制的透彻理解,也算是对Java类加载模型的掌握的不错的一个反映. 了解一个不太熟悉的类,那么从使用案例出发,读懂源代码以及代码内部执行逻辑是一个不错的学习方式 ...

  6. Unity动态加载和内存管理(三合一)

    原址:http://game.ceeger.com/forum/read.php?tid=4394#info 最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Re ...

  7. ExtJS4.x动态加载js文件

    动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...

  8. DL动态加载框架技术

    转载自:http://blog.csdn.net/singwhatiwanna/article/details/40283117 DL动态加载框架技术文档 1. Android apk动态加载机制的研 ...

  9. Unity加载机制及内存管理

    原文地址: http://game.ceeger.com/forum/read.php?tid=4394 作者写的非常精彩~ 一 Unity里有两种动态加载机制 1,Resources.Load:从一 ...

最新文章

  1. php new redis错误,解决PHP Redis扩展无法加载的问题(zend_new_interned_string in Unknown on line 0)...
  2. LeetCode 375. Guess Number Higher or Lower II
  3. BZOJ 4974: 字符串大师
  4. oracle11告警日志,oracle 11.2.0.4 告警日志里错误
  5. php柱形图 数据sql,ThinkPHP 5.1 读取数据库中的图片
  6. vue验证整数_前端Vue中常用rules校验规则
  7. 服务器对象错误quot;ASP 0177:80040154quot;Server.CreateObject
  8. python threading.Barrier
  9. 计算机网络 chapter3数据链路层
  10. html音乐if代码如何使用,关于html:如何在带有JavaScript代码的if条件中使用函数方法?...
  11. Vue动态组件异步组件
  12. 关于BT.709标准
  13. UE4 特效生成函数
  14. 1.Modbus通信协议-什么是Modbus?
  15. ncode毛刺探测glyph自动识别及清除毛刺 流程图
  16. C++ boost 解析 Json
  17. java gzip 压缩解压工具类
  18. python画图,坐标轴问题
  19. 免费下载谷歌地球高清卫星影像和高程DEM教程
  20. 《逃离禁闭岛》游戏评测:不一样的密室逃脱

热门文章

  1. 在 Linux 上找出并解决程序错误的主要方法【转】
  2. 如何在使用babel和webpack时生成源图?
  3. 转换ArrayList String 到String []数组[重复]
  4. Java Hashmap:如何从价值中获取关键?
  5. 未捕获ReferenceError:未定义$?
  6. 如何在Bash中比较字符串
  7. 如何将Git存储库克隆到特定文件夹?
  8. WPF Viewport3D 解决透视模式时窗体模糊
  9. 三十而立,立的是什么?(r11笔记第70天)
  10. 一种高效的可变行高列表行定位算法