UE4 程序向C++性能优化 与 美术向性能优化

程序向:

1、对于一些component,不要一上来就attach,例如:一个玩家一上来就有飞行组件、游泳组件,但是你又暂时用不到它,如果可以,不要一上来一起绑定到玩家身上然后设置变量来控制它是否启用,显得类中过于臃肿

2、清空TArray时,如果该TArray对象还会继续使用,使用Reset()代替Empty(),因为前者不会销毁内存空间。

3、VS2019比前版本对C++代码编译速度会提升很多

4、还有一些算法数据结构对时间复杂度的优化

5、长时间用于计算的线程,创建和销毁是一件非常耗性能的事,这个时候采用线程池,将空闲的线程继续复用

6、能不用锁就尽量不用锁,锁会导致等待的代码一直判断锁是否解开,等待的代码多了,也是一个比较大的开销

7、能用HUD解决的就不要用UMG,等到需要显示时才创建Widget对象,不显示时则销毁,UMG对象较多时性能消耗巨大。
比如场景内有一千个单位,每个单位上都创建有WidgetComponent,即使这些WidgetComponent没有显示任何东西,也会产生巨大的GPU开销,所以尽量不要有这种情况

一来就把WidgetComponent给绑定上了 

使用这种方法进行创建和销毁

8、能不在tick写的东西,尽量不要在tick内写

如果实在要写在Tick里面,则把Tick的间隔调低(在没那么高帧数要求的情况下)

0代表每帧都调用,调低调成0.1等都行

9、大场景,巨量三角面需要渲染时,利用GPU进行多线程渲染

10、做适量的LOD和MipMap层数可以减少远距离观察物体贴图、模型的消耗


场景向:

1、3种光源的性能消耗从低到高:
定向光/平行光(Directional Light) < 点光源(Point Light) < 聚光灯(Spot Light)。

2、视距剔除:

3、材质性能开销对比:

Opaque < Masked < Translucent,相对于来说Opaque是性能消耗最小的

4、贴花的性能消耗取决于贴花所占像素大小,如果贴花过大,可以替换其它方案或者将贴花变小

5、如果BoxComponent不需要Overlap事件,那么将Generate Overlap Events 设置为false,当BoxCompont达到一定量级时,开启Generate Overlap Events的性能消耗是关闭情况下的两倍

6、如果不需要物理,将 Simulate Physics 设置为false。

7、如果不需要Hit事件,将 Simulation Generates Hit Events 设置为false。

8、Collision Presets越精确越好,能NoCollision就NoCollision,检测种类越少越好

9、灯光尽量调成静态光,动态光对性能消耗过大,一般人物手电筒啊什么的用动态光,其余能用静态光则用静态光


参考文档:[UE4]性能优化指南(程序向) - 知乎 (zhihu.com)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值