虚幻4的关卡动态加载机制
来源:互联网 发布:拟态网络 编辑:程序博客网 时间:2024/05/22 05:28
对于大型游戏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
0 0
- 虚幻4的关卡动态加载机制
- 虚幻4动态加载画面(后台加载关卡)的实现
- 虚幻4里的地图动态加载
- Unreal Engine 4 C++ 动态加载关卡
- 关卡动态加载
- 虚幻4动态加载PNG给Texture2D
- 虚幻4加载OBJ模型的方法
- 虚幻4---打造3D人物关卡demo
- Unreal4 入门(关卡动态加载)
- 虚幻4:加载资源LOG
- 虚幻4 UI加载优化
- Python的动态加载机制
- Python的动态加载机制
- UE4中动态创建并加载流关卡
- Unreal Engine 4/虚幻4 视频纹理或者在关卡中播放视频
- Unreal Engine 4/虚幻4 流媒体纹理或者在关卡中播放流媒体
- 虚幻4的Style
- Android apk动态加载机制的研究
- Spring对hibernate配置文件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置
- mac下忘记root密码
- Js之遇到的BUG
- 使用应用程式专用密码登陆Xcode
- HttpClient超时机制算法探讨
- 虚幻4的关卡动态加载机制
- Nginx + Tomcat 动静分离实现负载均衡
- java 字节流与字符流的区别
- synchronized的底层JVM实现机制
- gulp学习笔记
- launchOptions利用userActivity呼起app设置
- Maven Tomcat7自动部署
- Atomic与Volatile对比
- 第一章:开始