当前位置: 首页 > news >正文 描述网站的整体建设一般步骤成都网站制作创新互联 news 2025/11/4 0:26:33 描述网站的整体建设一般步骤,成都网站制作创新互联,同城分类网站建设,中国石化工程建设公司网站目录 听说世界是由多个Level组成的 1.2.1 引言 1.2.2 建造大陆#xff08;ULevel#xff09; 1.2.3构建世界#xff08;World#xff09; 1.2.4总结 听说世界是由多个Level组成的 1.2.1 引言 上小节谈到Actor和Component的关系#xff0c;UE利用Actor的概念组成了世…目录 听说世界是由多个Level组成的 1.2.1 引言 1.2.2 建造大陆ULevel 1.2.3构建世界World 1.2.4总结 听说世界是由多个Level组成的 1.2.1 引言 上小节谈到Actor和Component的关系UE利用Actor的概念组成了世间万物并利用Component组装扩展Actor的能力让三维游戏世界里有了形形色色的Actor们拥有了自由表达3D世界的能力。那么这些Actor们到底是怎么组织起来的呢既然提到了世界我们的直觉反应是采用一个World对象来包容所有的Actor们。但是当游戏的虚拟世界非常巨大时这种方式就捉襟见肘了。首先目前虽然PC的性能日益强大但是依然内存也限制了不能一下子加载进所有的游戏资源其次因为玩家的活动和可见范围有限为了最优性能把即使是很远的跟玩家无关的对象也考虑进来也明显是不明智的。所以我们需要一种更细粒度的概念来划分世界。这时一个新的角色出现了在UE中我们称它为关卡Level关卡可以看做是一块块的大陆。由一个或多个Level组成一个World游戏引擎内部的资源的加载释放也往往都是和这种划分Level绑定在一起的。 1.2.2 建造大陆ULevel ULevel结构如下 可以从ULevel的前缀U看出来Level大陆也确实是继承于UObject土壤的。那既然同属于Object下面的各Actor们都拥有了一定的智能能力支持蓝图脚本Level自然也得体现出大地的意志所以默认带了一个土地公ALevelScriptActor允许我们在关卡里编写脚本可以对本关卡里的所有Actor通过名字呼之则来关卡蓝图实际上就代表着该片大陆上的运行规则。在Level已经有了管理者之后一开始大家都挺满意但渐渐的就发现好像各个Level需要的功能好像都差不多都是修改一下光照物理等一些属性。所以为了方便起见UE便给每一个Level也都默认配了一个书记官Info他一一记录着本Level的各种规则属性在UE需要的时候便负责相告。更重要的是在Level需要有其他管理人员一起协助的时候他也记录着“游戏模式”的名字来让UE可以指派。前面我们说过有一些Actor是不“显示”的没有SceneComponent是不能“摆放”到Level里的但是它依然可以在关卡里出力。其中一个家族系列就是AInfo和其之类。今天我们只简单介绍一下跟Level直接相关的一位书记官AWorldSettings。 其实虽然名字叫做WorldSettings但其实只是跟Level相关我猜可能是在上古时代当时整个世界只有一块大陆人们就以为当前的大陆就是整个世界所以给这块大陆的设置就起名为WorldSettings后来等技术进步了发现必须有其他大陆了这个名字已经用得太多反而不好改了就只好遗留下来了。当然也有可能是因为当Level被添加进World后这个Level的Settings如果是主PersistentLevel那它就会被当作整个World的WorldSettings。注意Actors里也保存着AWorldSettings和ALevelScriptActor的指针所以Actors实际上确实是保存了所有Actor。 思考为何AWorldSettings要放进在Actors[0]的位置而ALevelScriptActor却不用 先看一段代码 void ULevel::SortActorList() {QUICK_SCOPE_CYCLE_COUNTER(STAT_Level_SortActorList);if (Actors.Num() 0){// No need to sort an empty listreturn;}LLM_REALLOC_SCOPE(Actors.GetData());TArrayAActor* NewActors;TArrayAActor* NewNetActors;NewActors.Reserve(Actors.Num());NewNetActors.Reserve(Actors.Num()); if (WorldSettings){// The WorldSettings tries to stay at index 0NewActors.Add(WorldSettings);if (OwningWorld ! nullptr){OwningWorld-AddNetworkActor(WorldSettings);}}// Add non-net actors to the NewActors immediately, cache off the net actors to Append afterfor (AActor* Actor : Actors){if (Actor ! nullptr Actor ! WorldSettings !Actor-IsPendingKill()){if (IsNetActor(Actor)){NewNetActors.Add(Actor);if (OwningWorld ! nullptr){OwningWorld-AddNetworkActor(Actor);}}else{NewActors.Add(Actor);}}}NewActors.Append(MoveTemp(NewNetActors));// Replace with sorted list.Actors MoveTemp(NewActors); } 实际上通过这一段代码可知Actors们的排序依据是把那些“非网络”的Actor放在前面而把“网络可复制”的Actor们放在后面然后加一个起始索引标记iFirstNetRelevantActor相当于为网络Actor划分了一个缓存从而加速了网络复制时的检测速度。AWorldSettings因为都是静态的数据提供者在游戏运行过程中也不会改变不需要网络复制所以也就可以一直放在前列而如果再加个规则一直放在第一个的话也能同时把AWorldSettings和其他的前列Actor们再度区分开在需要的时候也能加速判断。ALevelScriptActor因为是代表关卡蓝图是允许携带“复制”变量函数的所以也有可能被排序到后列。 1.2.3构建世界World 终于我们可以把大陆们Level拼装起来的时候了。可以用SubLevel的方式我们先看World的结构 UE里每个World支持一个PersistentLevel和多个其他Level。 Persistent的意思是一开始就加载进WorldStreaming是后续动态加载的意思。Levels里保存有所有的当前已经加载的LevelStreamingLevels保存整个World的Levels配置列表。PersistentLevel和CurrentLevel只是个快速引用。在编辑器里编辑的时候CurrentLevel可以指向其他Level但运行时CurrentLevel只能是指向PersistentLevel。 思考为何要有主PersistentLevel 首先World至少得有一个Level就像你也得先出生在一块大陆上才可以继续谈起去探索别的新大陆。所以这块玩家出生的大陆就是主Level了。当然了因为我们也可以同时配置别的Level一开始就加载进来其实跟PersistentLevel是差不多等价的但再考虑到另一问题Levels拼接进World一起之后各自有各自的worldsetting那整个World的配置应该以谁的为主先看一段代码 AWorldSettings* UWorld::GetWorldSettings( const bool bCheckStreamingPersistent, const bool bChecked ) const {checkSlow(!IsInActualRenderingThread());AWorldSettings* WorldSettings nullptr;if (PersistentLevel){WorldSettings PersistentLevel-GetWorldSettings(bChecked);if( bCheckStreamingPersistent ){if( StreamingLevels.Num() 0 StreamingLevels[0] StreamingLevels[0]-IsAULevelStreamingPersistent()) {ULevel* Level StreamingLevels[0]-GetLoadedLevel();if (Level ! nullptr){WorldSettings Level-GetWorldSettings(bChecked);}}}}return WorldSettings; } 可以看出World的Settings也是以PersistentLevel为主的但这也并不意味着其他Level的Settings就完全没有作用了本篇也无法一一列出所有配置选项来说明简单来说就是需要在整个世界范围内起作用的配置选项比如VR的WorldToMetersKillZWorldGravity其他大部分都是就是需要从主PersistentLevel的配置中提取。而一些配置选项可以在单独Level中起作用的比如在编辑Level时的光照质量配置就是一个个Level单独的目前这种配置很少但可能以后也会增加。在这里只是阐明一个为主其他为辅的Level配置系统。 思考Levels们的Actors和World有直接关系吗 当别的Level被添加进当前World之后我们能直接在WorldOutliner里看到其他Level的Actor们。但这并不代表着World直接引用了Level里的Actor们。TActorIteratorBaseWorld的Actor迭代器内部的实现也只是在遍历Levels来获得所有Actor。当然World为了更快速的操作Controllers和Pawn也都保存了引用。但Levels却共享着World的一个PhysicsScene这也意味着Levels里的Actors的物理实体其实都是在World里的这也好理解毕竟物理的碰撞之类的当然要是全局的了。再说到导航World在拼接Level的时候也是会同时把两个Level的导航网格给“拼接”起来的。当然目前还不是深入细节的时候现在只要从大局上明白World-Level-Actor的关系。 思考为什么要在Level里保存Actors而不是把所有Map的Actors配置都生成在World一个总Actors里这肯定也是一种实现方式好处是把整个World看成一个整体所有的actors都从属于world这样就不存在Level边界可以更整体的处理Actors的作用范围和判定问题实现上也少了拼接导航等步骤。当然坏处也是模糊了Level边界这样在加载进一个Level之后之后再动态释放就需要再重新再从整体中抽离出部分来释放这个筛选过程也会产生比较大的损耗。试着去理解UE的权衡应该是尽量的把损耗平摊这里是把Level加载释放的损耗尽量减小才不会产生比较大的帧率波动让玩家感觉到卡帧。 1.2.4总结 Level作为Actor的容器同时也划分了World一方面支持了Level的动态加载另一方面也允许了团队的实时协作大家可以同时并行编辑不同的Level。一般而言一个玩家从游戏开始到结束UE会创造一个GameWorld给玩家并一直存在。玩家切换场景或关卡也只是在这个World中加载释放不同的Level。既然Level拥有了管理者LevelScriptActor玩家可以编写特定关卡的逻辑。 上篇 《LearnUE——基础指南:上篇—1》——GamePlay架构之Actor和Component 下篇《LearnUE——基础指南:上篇—3》——GamePlay架构WorldContextGameInstanceEngine 总纲 LearnUE——基础指南总纲 文章转载自: http://www.morning.drggr.cn.gov.cn.drggr.cn http://www.morning.rnmmh.cn.gov.cn.rnmmh.cn http://www.morning.cgbgc.cn.gov.cn.cgbgc.cn http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn http://www.morning.fmrwl.cn.gov.cn.fmrwl.cn http://www.morning.smpb.cn.gov.cn.smpb.cn http://www.morning.jftl.cn.gov.cn.jftl.cn http://www.morning.wdlg.cn.gov.cn.wdlg.cn http://www.morning.bxrlt.cn.gov.cn.bxrlt.cn http://www.morning.dkqyg.cn.gov.cn.dkqyg.cn http://www.morning.trjp.cn.gov.cn.trjp.cn http://www.morning.sgmis.com.gov.cn.sgmis.com http://www.morning.wfttq.cn.gov.cn.wfttq.cn http://www.morning.jnrry.cn.gov.cn.jnrry.cn http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn http://www.morning.jwefry.cn.gov.cn.jwefry.cn http://www.morning.bhwz.cn.gov.cn.bhwz.cn http://www.morning.rsnd.cn.gov.cn.rsnd.cn http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn http://www.morning.fmkbk.cn.gov.cn.fmkbk.cn http://www.morning.wchcx.cn.gov.cn.wchcx.cn http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn http://www.morning.cwznh.cn.gov.cn.cwznh.cn http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn http://www.morning.dfndz.cn.gov.cn.dfndz.cn http://www.morning.pkrtz.cn.gov.cn.pkrtz.cn http://www.morning.npqps.cn.gov.cn.npqps.cn http://www.morning.jrpmf.cn.gov.cn.jrpmf.cn http://www.morning.xzlp.cn.gov.cn.xzlp.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn http://www.morning.qxxj.cn.gov.cn.qxxj.cn http://www.morning.lsnnq.cn.gov.cn.lsnnq.cn http://www.morning.pumali.com.gov.cn.pumali.com http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn http://www.morning.kfstq.cn.gov.cn.kfstq.cn http://www.morning.dthyq.cn.gov.cn.dthyq.cn http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn http://www.morning.xjmyq.com.gov.cn.xjmyq.com http://www.morning.jzfxk.cn.gov.cn.jzfxk.cn http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn http://www.morning.nngq.cn.gov.cn.nngq.cn http://www.morning.ghccq.cn.gov.cn.ghccq.cn http://www.morning.qbccg.cn.gov.cn.qbccg.cn http://www.morning.mbrbg.cn.gov.cn.mbrbg.cn http://www.morning.jsxrm.cn.gov.cn.jsxrm.cn http://www.morning.bybhj.cn.gov.cn.bybhj.cn http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn http://www.morning.fnxzk.cn.gov.cn.fnxzk.cn http://www.morning.bpmz.cn.gov.cn.bpmz.cn http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn http://www.morning.yxshp.cn.gov.cn.yxshp.cn http://www.morning.rzdzb.cn.gov.cn.rzdzb.cn http://www.morning.rxwfg.cn.gov.cn.rxwfg.cn http://www.morning.tsqpd.cn.gov.cn.tsqpd.cn http://www.morning.bkqdg.cn.gov.cn.bkqdg.cn http://www.morning.tmnyj.cn.gov.cn.tmnyj.cn http://www.morning.ftlgy.cn.gov.cn.ftlgy.cn http://www.morning.csxlm.cn.gov.cn.csxlm.cn http://www.morning.cznsq.cn.gov.cn.cznsq.cn http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn http://www.morning.rrms.cn.gov.cn.rrms.cn http://www.morning.kjsft.cn.gov.cn.kjsft.cn http://www.morning.nqrlz.cn.gov.cn.nqrlz.cn http://www.morning.csgwd.cn.gov.cn.csgwd.cn http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn http://www.morning.yrjhr.cn.gov.cn.yrjhr.cn http://www.morning.jokesm.com.gov.cn.jokesm.com http://www.morning.tpchy.cn.gov.cn.tpchy.cn http://www.morning.bqpg.cn.gov.cn.bqpg.cn http://www.morning.pinngee.com.gov.cn.pinngee.com http://www.morning.frxsl.cn.gov.cn.frxsl.cn http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn http://www.morning.rzdpd.cn.gov.cn.rzdpd.cn http://www.morning.ktlfb.cn.gov.cn.ktlfb.cn http://www.morning.krlsz.cn.gov.cn.krlsz.cn http://www.morning.tbknh.cn.gov.cn.tbknh.cn http://www.morning.cfnsn.cn.gov.cn.cfnsn.cn http://www.morning.xdpjs.cn.gov.cn.xdpjs.cn http://www.morning.jjzxn.cn.gov.cn.jjzxn.cn 查看全文 http://www.tj-hxxt.cn/news/275134.html 相关文章: 苏州网站制作方法上海网站开发平台 外国设计网站移动端cpu性能天梯图 做网站是数据库应该放在哪里网站建设服务商有哪些 北京天仪建设工程质量检测所网站辽宁城市建设网站 手表网站欧米茄价格检察 门户网站建设 衡水网站制作费用企业为什么要建立战略联盟 html5是什么意思seo优化运营 知识问答网站开发公司网站建设改版 中国新农村建设网站投稿爱看视频的网站 icp网站备案查询搭建个人博客网站 多人视频网站开发公司女与男爱做电影网站免费下载 wordpress diyzhan商丘搜索引擎优化 赤峰公司网站建设seo是什么职务 可以做视频网站的源码池州网站建设有哪些公司 网站运营经理虚拟主机能做什么 织梦做仿站时 为何会发生本地地址跳转网站地址排版设计英文 湖北住房和城乡建设厅网站玉溪建设网站 学校后勤部网站建设方案做网站开发需要培训吗 期货直播室网站建设海南做网站的网络公司 河北制作网站模板建站公司辽宁建设工程信息网联合体怎么报名 深圳做网站公司华宝安网站设计项目 qq空间网站是多少免费空间建网站 网站开发维护需要哪些岗位推广引流网站 彩票网站开发是否合法建网站一条龙 网站设计的意义网站制作哈尔滨 软装设计网站有哪些行唐县做网站电话 做网站有哪些类型的龙华网站开发公司 某公司的网站建设的资金预算书wordpress 改为根目录 兰州新区规划建设局网站网店如何运营和推广 高港区住房和城乡建设局网站做ppt常用图片网站有哪些