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。

相关推荐
相信神话20211 小时前
3.2《酒魂》规则设计文档
游戏引擎·godot·2d游戏编程·godot4·2d游戏开发
一起搞IT吧4 小时前
Android性能系列专题理论之十:systrace/perfetto相关指标知识点细节含义总结
android·嵌入式硬件·智能手机·性能优化
许彰午4 小时前
我手写了一个 Java 内存数据库(二):B+ 树的插入与分裂
java·开发语言·面试
techdashen7 小时前
从 51% CPU 占用到 SIMD 加速:Cloudflare 防火墙引擎的性能优化实录
性能优化
草履虫君8 小时前
VMware 虚拟机网络性能优化指南:从 11 秒到 4 秒的完整调优实践
服务器·网络·经验分享·性能优化
weisian1518 小时前
基础篇--概念原理-2-参数是什么?——从原理到实战,一篇讲透
面试·职场和发展·模型参数·7b和70b·参数=规则,不是原始数据
AI人工智能+电脑小能手10 小时前
【大白话说Java面试题】【Java基础篇】第26题:Java的抽象类和接口有哪些区别
java·开发语言·面试
Avalon71210 小时前
Unity3D响应式渲染UI框架UniVue
游戏·ui·unity·c#·游戏引擎
kyriewen11 小时前
你的网页慢,用户不说直接走——前端性能监控教你“读心术”
前端·性能优化·监控
一起搞IT吧11 小时前
Android性能系列专题理论之十一:block IO问题分析思路
android·嵌入式硬件·智能手机·性能优化