Unity性能优化-2d游戏的DrawCall

一、UI

UI算drawcall是按照Hierarchy面板 优先深度遍历后检查相邻是否材质相同,如:

Canvas

├─ BackgroundImage (Image)

├─ ScrollView

│ └─ Viewport

│ └─ Content

│ ├─ Images

│ └─ Texts

├─ PopupButton (Image)

└─ PopupButtonLabel (TMP)

深度优先展开结果是:

BackgroundImage (Image)

Content.Sprites.* (Image)

Content.Texts.* (TMP)

PopupButton (Image)

PopupButtonLabel (TMP)

我们需要做的是,让相同材质的UI尽量相邻,放到一个空物体下,比如

Canvas

|------ImageAs

|------Texts

|------ImageBs

|------TextsB

一个图集中的sprite当然也被视为同一个材质。

二、2d游戏

对所有会画到一个相机上的Renderer(SpriteRenderer / TilemapRenderer / ParticleSystem 等):

  1. 先按Sorting Layer排

    • 在 Project Settings → Tags and Layers 里你定义的那几个 Layer:

      • Default

      • Background

      • Player

      • Front

      • UI

    • 层级列表从上到下:越靠下的,越后画 → 越在"上面"。

    • 也可以用 renderer.sortingLayerName / sortingLayerID 改。

  2. 同一个 Sorting Layer 内:按 Order in Layer 排

    • SpriteRenderer.sortingOrder(Inspector 的 "Order in Layer")

    • 数字越大 → 越后画 → 越在"上面"。

  3. 同一个 Layer + 同一个 Order 时:看"距离相机"

    • 默认是按 Z 轴 距离相机排序:离相机更近的,后画。

    • 2D 模式通常相机在 (0, 0, -10),Z 越大越离相机越近(-9 > -10)。

    • Project Settings → Graphics → Transparency Sort Mode 可以改成:

      • Default(用 Z)

      • Custom Axis(比如 2D 里常用 Y 轴,让 Y 越小越在上面之类)

所以一般,一个SortingLayer的都在一个图集里,或将一个图集的放在一个SortingLayer和Order。

相关推荐
李航198330 分钟前
虚拟盖房子,在游戏中学习房子的建造过程
人工智能·学习·游戏·计算机视觉·ai编程
_张一凡1 小时前
【AIGC面试面经第15期】AI 视频核心基础知识相关问答
面试·职场和发展·aigc
萨小耶1 小时前
AI 面试答题链路源码分析:Redis 幂等、题目锁与状态机如何配合
人工智能·redis·面试
充值内卷2 小时前
C++单文件迷宫游戏:TauriCPP 开发全记录
开发语言·c++·游戏
Sailing2 小时前
【封闭结束3】ReAct 循环:从一次 Function Call 到多步 Agent
人工智能·面试·agent
用AI来创业吧2 小时前
企业官网GEO改造:从页面结构到监测回填的五层清单
性能优化·需求分析
乐动心情2 小时前
AI推理性能优化的关键技术即演进路径
人工智能·性能优化
Oiiouui2 小时前
Godot-GridGame架构逻辑层与实体/物品层篇
架构·游戏引擎·godot
天天进步20152 小时前
Unity 2020.3 反复提示安全模式:一次 CS0009 与 DLL 文件占用的排查记录
unity·1024程序员节
j7~3 小时前
IT 面试指南:从准备到 Offer 的完整路线图(校招 / 实习通用
面试·职场和发展·秋招·春招·实习面试·it后端