前面,我们对角色和敌人进行了一些完善。在这一篇文章里面,我们将进行对场景进行搭建,并对场景的光照和场景的后处理进行设置。
创建新场景
选择新建关卡
接着选择将关卡另存为
选择一个合理的位置
我们将场景内的网格地面删除掉,然后将场景内环境相关设置的图片向上拖拽,防止影响我们后续编辑
然后拖入一块地板,查看效果,将其位置重置到远点
然后我们可以按住alt键拖拽,可以自动复制一个,在右上角,我们可以开启移动限制,也就是每次移动最小单位
搭建好以后,我们要修改场景设置,在右上角的设置选择场景设置
将游戏模式修改为我们之前创建的蓝图
选择添加一个玩家出生点
运行一下,查看是否能够顺利运行
选中所有的场景添加的物体,我们可以右键移动到一个新的文件夹,方便管理,没有也可以新建
我们将场景的静态模型放置到一个目录,然后创建场景默认的光照一个文件夹,将玩家起始位置放在外面
修改场景光照
接下来我们一一介绍场景内默认的光照,并修改其中的一些设置。
首先是直接光,它是模拟的太阳光直接照射场景
我们制作的是地下城的场景,光照不需要那么强,将光照修改为1lux(流明,光照的单位,被光均匀照射的物体,在1平方米面积上所得的光通量是1流明时,它的照度是1lux)
然后我们将光照的颜色修改为,这样场景会偏暗一些
接着修改色温,色温也会影响场景的颜色,温度越低,颜色越红,温度越高,颜色越蓝
高度雾,可以根据场景的高度生成雾效,我们暂时不修改
SkyAtmoSphere为天空大气,为包裹整个场景边缘的填充颜色使用
SkyLight为天空光照,用来模拟环境对物体的光照影响区别于直接光
我们将天空光照的强度调整为50
我们将天空光照的颜色稍微修改一下
天空球可以让我们实现自定义天空的模样
体积云就是通过程序生成的云的效果
添加后处理
接下来,我们添加后处理,进一步处理效果
我们添加一个后期处理体积
将其设置为无限范围
在后期处理材质这里,我们将之前使用的描边功能添加上
在曝光这里,我们将EV都调整为0,这样,场景就不会模拟人眼从亮暗切换的时候,会有一个亮度过渡的效果(这个打个比方,比如你在阳光下,突然进入地窖,地窖里面比较暗,你的眼睛必须缓和一会才能看清楚地窖里面的东西的那个感觉。)
修改色温
稍微修改一下它的饱和度对比度以及伽马值
然后稍微调整一下暗部的饱和度对比度和伽马值
稍微调整一下中间调
调整模拟胶片的质感
我们可以通过各种形式调整出个人喜欢的效果
在场景填充更多的内容
正常的游戏不会让玩家突然掉出平台,所以边缘需要有栏杆阻挡玩家,就和景区防止游客坠崖一样。
我们首先搭建出来一个简单的闭合的场景
注意查看模型的碰撞,通过点击显示,来显示它的简易碰撞
它的默认的简单碰撞导致我们无法触及到那四块可以移动到的位置
我们需要重新制作简单碰撞,首先将默认的碰撞移除
然后添加一个盒状碰撞
它的效果是这样的
我们选中它,将其调整为可以阻挡角色落下的碰撞体
然后复制粘贴,添加另外的两个碰撞体,防止角色从栏杆跳出
在细节这里,我们设置自定义碰撞,防止和相机产生碰撞,并且设置阻挡投射物,碰撞复杂度这里,不推荐使用复制的碰撞应用与简单碰撞,会影响性能。
我们在场景里面还需要开启可以生成重叠事件,防止技能穿透模型
我们还可以摆放一个立柱,在上面添加一个火苗
在火苗位置添加一个点光源模拟火苗照射
修改一个光源颜色,模拟火苗光照颜色
看上去就是和火照射的一样
性能分级
我们可以通过设置找到设置画质品质来修改,可以查看在低性能设备下的渲染是否有性能问题。我们可以通过点击 低 中 高 等来切换下面的渲染质量,以实现兼容更低的设备。
我们调低了,会发现左上角有显示纹理内存不足的消息,这是因为在屏幕中同时显示的纹理占用的内存超出了设置的纹理内存的值。
出现这种情况,就会有一些模型的贴图会加载mipmap的层级纹理,降低纹理的精度,来实现减少纹理占用。
解决这个问题的方法也不难,我们可以压缩使用的纹理图片的分辨率,来实现每一张问题的占用。
我们打开地板的材质,找到它使用的纹理,发现它是一张4K的图片,资源占用竟然达到了10M,一般在正常的游戏里不需要使用如此之大的游戏。
我们可以通过设置里面修改它最大纹理尺寸,来限制它的内存占用,比如修改成512后,它的资源大小,就只有171kb
我们也可以实现批量修改,通过过滤器和名称,将场景内使用的纹理都筛选出来
多选需要修改的纹理,然后选择 编辑属性矩阵中的选择
然后在右侧批量修改纹理尺寸
批量处理完成以后,查看当前纹理是否修改成功
修改纹理内存容量
我们可以在UE命令行中输入命令stat streaming
来查看当前的纹理池有多大,纹理池相当于属于存储纹理的一块专门的内存池子,在场景内显示的模型使用的纹理会通过此池子进行读取,并且也会应用mipmap层级来减少纹理的内存占用
我们还可以通过修改配置来修改纹理的内容容量,防止出现这种情况
我们可以直接在命令行里修改,通过命令修改,单位为M,这个池包含UI纹理、NeverStream纹理、立方体贴图和流送纹理。在某些平台上,这个池还可以保存非纹理资源,例如GPU粒子缓冲区和顶点缓冲区。设置为0时,池的大小将不受限制。
r.Streaming.PoolSize=2000
如果你关闭了编辑器重新打开,则又回到了默认参数,我们可以在配置项文件中设置,每次启动都会按照这个配置来。
配置文件在Config文件夹里面的DefaultEngine.ini文件内
我们在[/Script/Engine.RenderSettings]下面增加两个配置,来实现对纹理内存的设置
[/Script/Engine.RenderSettings]
r.TexturesStreaming=True
r.Streaming.PoolSize=2000
r.TexturesStreaming 此命令用于启用或禁用纹理流送器。当纹理流送器被禁用后,所有纹理mip都将被完全加载到内存中,即使在纹理从来没有被用于渲染的情况下也是如此。如果需要,您可以在运行时切换此选项。
我们甚至可以在纹理上设置纹理从不流送来关闭某个纹理的流送,它将在内存中生成所有的mipmap层级