Add Zhihu: 如何正确高效的查找游戏「卡顿」原因? - 知乎
This commit is contained in:
@@ -2,10 +2,57 @@
|
|||||||
title: "如何正确高效的查找游戏「卡顿」原因? - 知乎"
|
title: "如何正确高效的查找游戏「卡顿」原因? - 知乎"
|
||||||
source: "知乎"
|
source: "知乎"
|
||||||
url: "https://www.zhihu.com/question/28824284/answer/1965456096262096583"
|
url: "https://www.zhihu.com/question/28824284/answer/1965456096262096583"
|
||||||
date: 2026-06-10 22:46
|
date: 2026-06-10 22:49
|
||||||
tags: [zhihu, saved]
|
tags: [zhihu, saved]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
关注
|
||||||
|
推荐
|
||||||
|
热榜
|
||||||
|
专栏
|
||||||
|
圈子
|
||||||
|
New
|
||||||
|
付费咨询
|
||||||
|
故事
|
||||||
|
|
||||||
|
直答
|
||||||
|
切换模式
|
||||||
|
登录/注册
|
||||||
|
如何正确高效的查找游戏「卡顿」原因?
|
||||||
|
关注问题
|
||||||
|
|
||||||
|
写回答
|
||||||
|
登录/注册
|
||||||
|
游戏
|
||||||
|
程序员
|
||||||
|
编程
|
||||||
|
Unity(游戏引擎)
|
||||||
|
如何正确高效的查找游戏「卡顿」原因?
|
||||||
|
背景:我在一家创业公司,我们开发了一些独立的小游戏。最近在做的一款小游戏,使用了 Unity 引擎,在研发快要完成时,我们忽然发现:游戏偶尔会卡一下,…显示全部
|
||||||
|
关注者
|
||||||
|
206
|
||||||
|
被浏览
|
||||||
|
37,144
|
||||||
|
关注问题
|
||||||
|
写回答
|
||||||
|
|
||||||
|
邀请回答
|
||||||
|
|
||||||
|
好问题 1
|
||||||
|
|
||||||
|
1 条评论
|
||||||
|
|
||||||
|
分享
|
||||||
|
|
||||||
|
登录后你可以
|
||||||
|
不限量看优质回答私信答主深度交流精彩内容一键收藏
|
||||||
|
登录
|
||||||
|
查看全部 12 个回答
|
||||||
|
知秋
|
||||||
|
游戏性能优化
|
||||||
|
|
||||||
|
关注
|
||||||
|
|
||||||
专栏文章汇总,持续更新:
|
专栏文章汇总,持续更新:
|
||||||
|
|
||||||
高通 Adreno GPU 最佳实践 0--汇总 - 知乎
|
高通 Adreno GPU 最佳实践 0--汇总 - 知乎
|
||||||
@@ -114,3 +161,182 @@ tags: [zhihu, saved]
|
|||||||
尽管许多应用的目标是“尽可能达到显示硬件的最大刷新速度”,但即便应用受垂直同步限制,仍存在优化空间,且优化收益不仅限于提升帧率。
|
尽管许多应用的目标是“尽可能达到显示硬件的最大刷新速度”,但即便应用受垂直同步限制,仍存在优化空间,且优化收益不仅限于提升帧率。
|
||||||
|
|
||||||
移动应用的多数性能问题最终都与“功耗/电池续航”相关。即便应用通过“受垂直同步限制”(而非受CPU或GPU限制)达到了目标帧率,仍建议优化代码:若能通过修改代码降低功耗、减少设备发热,应用可在“完成更少工作”的同时维持目标帧率,还可能在低端设备上实现更优性能。
|
移动应用的多数性能问题最终都与“功耗/电池续航”相关。即便应用通过“受垂直同步限制”(而非受CPU或GPU限制)达到了目标帧率,仍建议优化代码:若能通过修改代码降低功耗、减少设备发热,应用可在“完成更少工作”的同时维持目标帧率,还可能在低端设备上实现更优性能。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
阅读全文
|
||||||
|
|
||||||
|
赞同 72
|
||||||
|
|
||||||
|
添加评论
|
||||||
|
|
||||||
|
314
|
||||||
|
|
||||||
|
7
|
||||||
|
|
||||||
|
分享
|
||||||
|
豆包让小白也能玩转 AI 漫画图片生成
|
||||||
|
豆包让小白也能玩转 AI 漫画图片生成
|
||||||
|
查看详情
|
||||||
|
豆包
|
||||||
|
的广告
|
||||||
|
更多回答
|
||||||
|
王耀威
|
||||||
|
投资合作做游戏找我
|
||||||
|
|
||||||
|
关注
|
||||||
|
|
||||||
|
首先打开profiler,查看所有凸起的线
|
||||||
|
|
||||||
|
一般游戏内卡顿的地方
|
||||||
|
|
||||||
|
游戏战斗过程中在加载资源文件
|
||||||
|
NGUI中图集太乱导致drawcall彪涨
|
||||||
|
|
||||||
|
NGUI中active/unactive导致重建drawcall生成大量的资源
|
||||||
|
频繁创建对象删除对象,没有缓存。
|
||||||
|
unity自身的一些bug,有时候可以看到物理引擎计算的量很大。
|
||||||
|
使用了更精确但更耗时的判断如meshcollider
|
||||||
|
所有逻辑都使用unity主线程处理
|
||||||
|
使用过多复杂的渲染,如一些实时GI或摄像机渲染效果加强
|
||||||
|
string串接foreach,getcomponet等问题
|
||||||
|
|
||||||
|
解决方法
|
||||||
|
|
||||||
|
在游戏战斗开始时前加载所有用到的资源,不要在战斗过程加载资源,因为unity是单线程的模式,如果没有使用异步线程做加载或一开始进入场景时加载,这个问题就很突出了。
|
||||||
|
|
||||||
|
NGUI为了减少GPU状态切换的消耗(比如切换material),把相同material的UIWidget合并,减少Draw Call的数量。这一步是基于UIPanel做的,合并UIWidget的代码可自行查看UIPanel.cs的FillAllDrawCalls()函数,原理如下图,尽量分好层次如背景框,按钮等。
|
||||||
|
NGUI中,active/unactive会删除重建材质drawcall,如果界面内容稍多一些,会导致内存分配,甚至出现drawcall的死循环,目前比较正确的做法是,设置在屏幕坐标外部,然后关闭所有NGUI脚本的运行,NGUI作者的回复截图。
|
||||||
|
|
||||||
|
|
||||||
|
使用对象池缓存一部分频繁使用的资源,不必每次都创建卸载。
|
||||||
|
更新新版本,设置好物理引擎参数。
|
||||||
|
如果没有必要的话,尽量使用速度较快的碰撞检测,入boxcollider。
|
||||||
|
应该合理分离主线程与逻辑线程的关系,比如一些算法采用异步执行的方式,网络数据的解析,加载等,使用代理来把必要的逻辑切换到主线程,不必要的逻辑使用逻辑线程,可以通过一个MonoBehaviour的update来执行代理逻辑
|
||||||
|
有些手机根本无法运行复杂的渲染,能简单尽量简单。
|
||||||
|
字符串串接使用stringbuilder不使用+,频繁foreach最好用for代替,缓存已经取到的componet.
|
||||||
|
阅读全文
|
||||||
|
|
||||||
|
赞同 30
|
||||||
|
|
||||||
|
6 条评论
|
||||||
|
|
||||||
|
59
|
||||||
|
|
||||||
|
11
|
||||||
|
|
||||||
|
分享
|
||||||
|
知乎用户
|
||||||
|
|
||||||
|
分享一点我们自己在做性能优化时的小经验:
|
||||||
|
|
||||||
|
在Unity Editor模式下运行,有部分Overhead是由运行时的场景编辑器导致的,采样的时候可以先把“Scene”关掉。
|
||||||
|
|
||||||
|
用Profiler采样时,首先重点关注CPU占用率高的方法,并且优先打击
|
||||||
|
|
||||||
|
关注内存分配“GC Alloc”,每帧超过100B的内存分配都需要解决,否则这样的的内存分配累积后就会引起GC,很容易引起卡顿
|
||||||
|
|
||||||
|
发布于2015-03-18 11:59
|
||||||
|
|
||||||
|
赞同 11
|
||||||
|
|
||||||
|
9 条评论
|
||||||
|
|
||||||
|
19
|
||||||
|
|
||||||
|
3
|
||||||
|
|
||||||
|
分享
|
||||||
|
|
||||||
|
查看全部 12 个回答
|
||||||
|
下载知乎客户端
|
||||||
|
与世界分享知识、经验和见解
|
||||||
|
广告
|
||||||
|
关于作者
|
||||||
|
知秋
|
||||||
|
游戏性能优化
|
||||||
|
回答
|
||||||
|
21
|
||||||
|
文章
|
||||||
|
33
|
||||||
|
关注者
|
||||||
|
243
|
||||||
|
|
||||||
|
关注他
|
||||||
|
|
||||||
|
发私信
|
||||||
|
大家都在搜
|
||||||
|
换一换
|
||||||
|
清北鹅腿阿姨被曝卖鸭腿
|
||||||
|
419 万
|
||||||
|
热
|
||||||
|
2026 高考数学
|
||||||
|
350 万
|
||||||
|
热
|
||||||
|
我国灵活就业人数超 3 亿
|
||||||
|
345 万
|
||||||
|
热
|
||||||
|
黄仁勋自嘲亚洲家庭关系
|
||||||
|
343 万
|
||||||
|
热
|
||||||
|
香港火灾落案起诉七人及两家公司
|
||||||
|
336 万
|
||||||
|
新
|
||||||
|
重回高考那年还能做对几道
|
||||||
|
329 万
|
||||||
|
热
|
||||||
|
膳魔师致 3 人失明
|
||||||
|
315 万
|
||||||
|
热
|
||||||
|
钉钉副总裁发表长文《置身钉外》
|
||||||
|
315 万
|
||||||
|
热
|
||||||
|
运城多人被臭味熏醒
|
||||||
|
299 万
|
||||||
|
热
|
||||||
|
张桂梅第16次送考
|
||||||
|
294 万
|
||||||
|
广告
|
||||||
|
|
||||||
|
帮助中心
|
||||||
|
服务热线:400-919-0001
|
||||||
|
帮助与客服
|
||||||
|
联系我们
|
||||||
|
更多
|
||||||
|
|
||||||
|
举报中心
|
||||||
|
违法和不良信息举报:010-82716601
|
||||||
|
我的举报
|
||||||
|
更多
|
||||||
|
|
||||||
|
关于知乎
|
||||||
|
知乎个人信息保护指引
|
||||||
|
知乎协议
|
||||||
|
下载知乎
|
||||||
|
Investor Relations
|
||||||
|
网站资质信息
|
||||||
|
更多
|
||||||
|
京ICP证110745号 · 京ICP备13052560号-1 · 京公网安备 11010802020088 号 · 京网文[2025]0422-132 号 · 药品医疗器械网络信息服务备案(京)网药械信息备字(2022)第00334号
|
||||||
|
登录知乎,问答干货一键收藏
|
||||||
|
打开知乎App
|
||||||
|
在「我的页」右上角打开扫一扫
|
||||||
|
其他扫码方式:微信
|
||||||
|
下载知乎App
|
||||||
|
无障碍模式
|
||||||
|
验证码登录密码登录
|
||||||
|
开通机构号
|
||||||
|
中国 +86
|
||||||
|
|
||||||
|
获取短信验证码
|
||||||
|
获取语音验证码
|
||||||
|
登录/注册
|
||||||
|
其他方式登录
|
||||||
|
未注册手机验证后自动登录,注册即代表同意《知乎协议》《隐私保护指引》
|
||||||
|
|
||||||
|
扫码下载知乎 App
|
||||||
|
|
||||||
|
关闭二维码
|
||||||
|
登录即可查看 超5亿 专业优质内容
|
||||||
|
超 5 千万创作者的优质提问、专业回答、深度文章和精彩视频尽在知乎。
|
||||||
|
立即登录/注册
|
||||||
|
|||||||
Reference in New Issue
Block a user