IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity 面试题:你是如何做好Unity项目性能优化的 -> 正文阅读

[游戏开发]Unity 面试题:你是如何做好Unity项目性能优化的

前言

?在面试中,我们经常会被问各种”莫名奇妙”的问题, 比如这道:”你是如何做好Unity项目性能优化的?”这个问题也太泛了吧,没有具体的优化点,这怎么回答?” 瞬间跃入脑海。做面试复盘的时候,你可能会想这个面试官是不是什么都不懂,是个”青铜”啊。没错,能问这道问题的面试官要么是个”青铜”, 要么就是”王者”。说他是青铜,可能真的什么都不懂,只是他听人说Unity 项目做性能优化的时候比较麻烦,所以就来问你,看你如何处理。还有一类是王者,就是来考你各方面的综合能力,接下来我们从

?对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!

?

“性能优化”最重要的方式(没有之一),不是任何的编程技术与技巧,而是从”项目管理”上防止”游戏做完马上要上线”时出现的性能问题。在日常项目管理中,把性能监控起来,问题尽早发现,尽早动态清零,这样才能做到项目从性能风险上是可控的。我的一些经验如下:

a:用心做好技术调研?

b:?从项目正式开发的第一天起就引入多平台测试与完整的测试机制;?

c:?留出专门时间与专人review代码;?

d:?了解运行中技术参数的变化,做好技术参数统计;?

2:?性能问题定位与分析

当项目开发过程中发现性能问题后,如何定位性能问题,定位到具体是哪里引发的,这个就变得非常重要了目前主要的手段如下(按照我认为的重要程度):?

?

3:性能问题常用的解决方案

说到这里了,才是我们很多面试的同学一开始就回答的,可以用xxxx手段来解决xxx问题。可能我们说的都对,但是在”王者”面试官看来,他出这个面试题,目的就是看你是否从系统上去思考如何把控游戏项目的性能。定位到了是某方面的问题,再去应对一些常用的手段,这里我就把一些常用的列举一下,可能有遗漏。

渲染优化: 看下pass的次数与set pass 次数, pass 次数,比如阴影这些都会导致多次pass,多光源这些会导致多次pass, 我们可以通过定制渲染管线,优化shader代码, 优化光照计算等,从Shader+渲染管线级别来做好渲染优化,现在比较火的UPR渲染,也可以参考我写的《URP 实战系列》的教程。还有LOD优化,远处用的面数少,近处用的面数多。抗锯齿算法优化等。

物理引擎优化: 这块化没有太多的空间了,用其它的技术去替代不用物理引擎,减少物理引擎的迭代参数,减少计算量,减少物理刚体的数目。

网络优化: 异步IO代替同步IO,多线程处理网络消息, protobuf序列化与反序列化优化网络包体体积。KCP 替换传统的TCP。

包体优化: 优化图片,声音体积,通过改变压缩参数来降低这些资源的体积大小。可以使用服务器上部署资源包来实现打空包机制进一步减少包体体积。

热更新优化:版本管理,增量下载,断点续传等。

内存优化: 减少资源的内存占用,不用的资源卸载掉,吃入显存的纹理可以采用平台支持的压缩格式。缓存池,减少内存碎片,减少对象的反复构建,避免GC峰值冲击等。具体可以看下《性能优化-内存篇》。

模型优化:通过细节增强,法线贴图,高度贴图,凹凸纹理等减少模型面试的同时获得很好的效果。

寻路导航优化: 优化算法,流场寻路等,多线程优化寻路算法。

代码写法优化: for循环内部不要过多跳转打乱CPU Cache等。……

其它的一些具体的优化手段,针对不同的问题来做一一的处理就可以了。具体问题具体分析。

?如果你是面试官,看到一个年轻的小伙,能系统的思考”性能优化”这个工程问题,你会录取么?

Unity / 面试专区 1~3年Unity开发人员跳槽规划与面试准备icon-default.png?t=M85Bhttps://www.bycwedu.com/promotion_channels/290591137

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:31:34  更:2022-10-31 12:33:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/17 6:14:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码