Appearance
拖拽 0 帧延迟优化
手势事件从 Update 迁移至 LateUpdate,抹平 1 帧延迟,实现拖拽 0 帧响应。
现象
用户拖拽地图时,手指移动和画面移动有 1 帧的延迟。在台架测试时可以用高帧率摄像机捕捉到:手指先动,地图后动(差约 16ms @60fps)。
根因
Unity 的渲染管线:
Input Event → Update() 中处理手势 → 计算新的地图位置 → LateUpdate → 渲染
↑ 这一帧已经在渲染了 ↑ 数据被推迟到下一帧Update 中更新地图位置后,当帧的渲染已经开始了——所以地图实际是下一帧才动的。
修复
csharp
// 原来:Update 中处理
void Update() {
HandleGesture(); // 地图在这一帧不会动
}
// 修复:LateUpdate 中处理
void LateUpdate() {
HandleGesture(); // 地图在当前帧就会动
}LD 地图移动统一 OnLateUpdate 对齐手势。之所以用 OnLateUpdate 而非直接在 Input 回调中更新,是因为需要确保相机等其他组件已经在 Update 中完成当帧计算。
验证
台架测试用高帧率摄像机逐帧对比:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 拖拽延迟 | 1 帧(~16ms) | 0 帧 |
| 跟手度 | 有拖影感 | 即时响应 |
16ms 的差异人眼一般感知不到,但在拖拽地图时积累的延迟感是真实存在的。
公开版深化
案例定位
拖拽 0 帧延迟优化不是孤立笔记,而是性能优化能力下的一个可复用案例。它服务于“小鹏一张图 / SR 渲染引擎”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。
关键问题
手势事件从 Update 迁移至 LateUpdate,抹平 1 帧延迟,实现拖拽 0 帧响应。
这篇文章已经覆盖 现象、根因、修复、验证。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。
企业级产出
| 产出 | 公开表达 |
|---|---|
| 问题定义 | 用用户体验、性能、稳定性或交付效率描述影响 |
| 技术方案 | 保留架构、流程、算法和工具链层面的抽象 |
| 指标证据 | 只使用页面已有数字或经过脱敏审查的量级 |
| 复用方法 | 沉淀为 SOP、检查清单、图谱关系或后续案例链接 |
指标与证据
- 拖拽 0 帧延迟优化
- 手势事件从 Update 迁移至 LateUpdate,抹平 1 帧延迟,实现拖拽 0 帧响应。
- 用户拖拽地图时,手指移动和画面移动有 1 帧的延迟。在台架测试时可以用高帧率摄像机捕捉到:手指先动,地图后动(差约 16ms @60fps)。
- 拖拽延迟 1 帧(~16ms) 0 帧
复盘结论
这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。
公开版深化
案例定位
拖拽 0 帧延迟优化不是孤立笔记,而是性能优化能力下的一个可复用案例。它服务于“小鹏一张图 / SR 渲染引擎”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。
关键问题
手势事件从 Update 迁移至 LateUpdate,抹平 1 帧延迟,实现拖拽 0 帧响应。
这篇文章已经覆盖 现象、根因、修复、验证。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。
企业级产出
| 产出 | 公开表达 |
|---|---|
| 问题定义 | 用用户体验、性能、稳定性或交付效率描述影响 |
| 技术方案 | 保留架构、流程、算法和工具链层面的抽象 |
| 指标证据 | 只使用页面已有数字或经过脱敏审查的量级 |
| 复用方法 | 沉淀为 SOP、检查清单、图谱关系或后续案例链接 |
指标与证据
- 拖拽 0 帧延迟优化
- 手势事件从 Update 迁移至 LateUpdate,抹平 1 帧延迟,实现拖拽 0 帧响应。
- 用户拖拽地图时,手指移动和画面移动有 1 帧的延迟。在台架测试时可以用高帧率摄像机捕捉到:手指先动,地图后动(差约 16ms @60fps)。
- 拖拽延迟 1 帧(~16ms) 0 帧
复盘结论
这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。
公开版深化
案例定位
拖拽 0 帧延迟优化不是孤立笔记,而是性能优化能力下的一个可复用案例。它服务于“小鹏一张图 / SR 渲染引擎”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。
关键问题
手势事件从 Update 迁移至 LateUpdate,抹平 1 帧延迟,实现拖拽 0 帧响应。
这篇文章已经覆盖 现象、根因、修复、验证。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。
企业级产出
| 产出 | 公开表达 |
|---|---|
| 问题定义 | 用用户体验、性能、稳定性或交付效率描述影响 |
| 技术方案 | 保留架构、流程、算法和工具链层面的抽象 |
| 指标证据 | 只使用页面已有数字或经过脱敏审查的量级 |
| 复用方法 | 沉淀为 SOP、检查清单、图谱关系或后续案例链接 |
指标与证据
- 拖拽 0 帧延迟优化
- 手势事件从 Update 迁移至 LateUpdate,抹平 1 帧延迟,实现拖拽 0 帧响应。
- 用户拖拽地图时,手指移动和画面移动有 1 帧的延迟。在台架测试时可以用高帧率摄像机捕捉到:手指先动,地图后动(差约 16ms @60fps)。
- 拖拽延迟 1 帧(~16ms) 0 帧
复盘结论
这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。