当前位置: 首页 > news >正文

UE基础 —— 打包项目

目录

设置游戏的默认地图

创建打包文件

发布

签名和加密

内容烘焙

优化加载时间

使用事件驱动加载器(Event Driven Loader,EDL)和异步加载线程(Asynchronous Loading Thread,ALT)

压缩.pak文件

对pak文件排序


        必须先对虚幻项目进行正确打包,之后才能将其发布给用户;打包能确保所有代码和内容都为最新且使用正确格式,以便在预期的目标平台上运行;

        打包过程会涉及以下几个步骤;首先,所有项目特定的源代码会被编译;代码编译完成后,所有所需的内容都会被转化(即所谓的"烘培")成目标平台可以使用的格式;然后,编译后的代码和经过烘焙的内容将被打包成一组可发布的文件,例如安装程序;

设置游戏的默认地图

        打包游戏前,首先需设置 游戏默认地图,打包好的游戏会在启动时首先加载这张地图;假如没有设置地图,并且使用的是空白项目,那么打包好的游戏在启动时只会显示一篇漆黑;假如使用了某张模板地图,例如第一人称(First Person)模板或第三人称(Third Person)模板,那么就会加载启动地图;

创建打包文件

        由于打包非常耗时,所以整个过程会在后台执行,可以继续使用编辑器;编辑器右下角会显示一个状态指示器,提示打包进度;

发布

        假如想将iOS或Android游戏发布到App Store或Google Play Store上,就要用发布(Distribution)模式创建打包文件;

签名和加密

        当以发布Shipping时,.Pak 文件可以签名或加密,通常是为了防止数据提取或篡改;

内容烘焙

        作为一名开发人员,在迭代新的或修改过的游戏内容时,可能并不总是希望经历将所有内容都打包到Staging Directory并从此处运行的漫长过程;

优化加载时间

        较短的加载时间对于开放世界场景游戏而言至关重要,而且对于任何类型的游戏来说也非常重要;

使用事件驱动加载器(Event Driven Loader,EDL)和异步加载线程(Asynchronous Loading Thread,ALT)
  • 一般来说,ALT应该会将加载速度提高一倍,包括具有"预先"加载时间的游戏和持续流送数据的游戏;ALT的工作方式是在两个独立的线程上同时运行序列化和后加载代码,因此,它增加了一项要求,即游戏代码中的"UObject"类构造函数、"PostInitProperties"函数和"Serialize"函数必须具有线程安全性;激活ALT后,ALT会将加载速度提高一倍;
  • 对于大多数项目,EDL会将加载时间减半;EDL是稳定的,可以向后移植到旧版本的虚幻引擎,也可以针对修改过或自定义的引擎版本进行调整;

压缩.pak文件
  • 大多数平台不提供自动压缩,且压缩你的 .pak 文件将减少加载时间,但有一些特殊情况需要考虑:

对pak文件排序

        井井有条的 .pak 文件对于减少加载时间至关重要;为了以最佳方式对 .pak 文件进行排序,UE4提供了一组工具来发现所需数据资产的顺序,并编译更快加载的包;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • leetcode47. 全排列 II有重复元素的全排列,深度优先搜索
  • 【022】字符串的处理(输出,分割,删除,新增,替换,查找,长度)_#VBA
  • c++11异常
  • Linux驱动入门实验班——DHT11、DS18B20模块驱动(附百问网视频链接)
  • 如何在 Android 智能手机上恢复已删除的图片
  • C++前向声明简介
  • 【Dash】Dash中@callback() 回调函数的Output() 参数
  • 【OpenCV】SIFT(尺度不变特征变换)算法?
  • [000-01-022].第03节:RabbitMQ环境搭建
  • RPC 运行时,第二次:发现新的漏洞
  • 从“云、边、端”的统一管理,为传统工厂数字化转型赋能的智慧地产开源了
  • UI测试使用webdriver-manager免安装浏览器驱动
  • 源码构建LAMP
  • 《区块链:能源市场变革的引领者》
  • 自来水厂供水监控的串口服务器应用
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • HashMap剖析之内部结构
  • HTML5新特性总结
  • KMP算法及优化
  • Mocha测试初探
  • MySQL用户中的%到底包不包括localhost?
  • PHP 的 SAPI 是个什么东西
  • PHP那些事儿
  • Python - 闭包Closure
  • unity如何实现一个固定宽度的orthagraphic相机
  • 翻译--Thinking in React
  • 仿天猫超市收藏抛物线动画工具库
  • 工作中总结前端开发流程--vue项目
  • 关于List、List?、ListObject的区别
  • 两列自适应布局方案整理
  • 实现菜单下拉伸展折叠效果demo
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • ionic入门之数据绑定显示-1
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (C语言)fgets与fputs函数详解
  • (Java入门)抽象类,接口,内部类
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (一)Java算法:二分查找
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Google的Objective-C编码规范
  • .net core 连接数据库,通过数据库生成Modell
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • ??eclipse的安装配置问题!??
  • @JsonFormat与@DateTimeFormat注解的使用
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504