• 游戏
  • 工业
  • 资源
  • 社区
  • 学习
  • 支持
开发
Unity 引擎
为任何平台构建2D和3D游戏
下载计划和定价
商业化
应用内购买(IAP)
发现并管理各商店的IAP
聚合平台
最大化收入并优化变现
Ad Quality
保护您应用的用户体验
Tapjoy
建立长期用户忠诚度
所有变现产品
用户获取
用户获取
被发现并获取移动用户
Unity向量AI
将玩家与合适的游戏连接
Aura设备内广告
在用户高峰参与时触达用户
所有增长产品
使用案例
3D协作
实时构建和审查3D项目
沉浸式培训
在沉浸式环境中培训
客户体验
创建互动3D体验
所有行业解决方案
行业
制造业
实现运营卓越
零售
将店内体验转化为在线体验
汽车
提升创新和车内体验
所有行业
技术库
文档
官方用户手册和API参考
开发者工具
发布版本和问题跟踪器
路线图
查看即将推出的功能
术语表
技术术语库
洞察
案例分析
真实成功案例
最佳实践指南
专家提示和技巧
所有资源
新增功能
博客
更新、信息和技术提示
新闻
新闻、故事和新闻中心
社区中心
讨论
讨论、解决问题和连接
事件
全球和本地活动
社区故事
Made with Unity
展示Unity创作者
直播活动
加入开发者、创作者和内部人员
Unity奖项
庆祝全球的Unity创作者
适合每个级别
Unity Learn
免费掌握Unity技能
专业培训
通过Unity培训师提升您的团队
Unity新手
准备开始
开始您的学习
Unity基础路径
你是Unity 新手?开始您的旅程
使用指南
可操作的技巧和最佳实践
教育
对于学生
开启您的职业生涯
对于教育者
增强您的教学
教育资助许可证
将Unity的力量带入您的机构
认证
证明您的Unity精通
支持选项
获取帮助
帮助您在Unity中取得成功
成功计划
通过专家支持更快实现目标
常见问题解答
常见问题解答
联系我们
与我们的团队联系
计划和定价
语言
  • English
  • Deutsch
  • 日本語
  • Français
  • Português
  • 中文
  • Español
  • Русский
  • 한국어
社交
货币
采购
  • 产品
  • Unity Ads
  • 订阅
  • Unity Asset Store
  • 经销商
教育
  • 学生
  • 教师
  • 机构
  • 认证
  • 学习
  • 技能发展计划
下载
  • Unity Hub
  • 下载存档
  • Beta 版测试
Unity Labs
  • 实验室
  • 作品
资源
  • 学习平台
  • 社区
  • 文档
  • Unity QA
  • 常见问题解答
  • 服务状态
  • 案例分析
  • Made with Unity
Unity
  • 我们公司
  • 新闻简报
  • 博客
  • 事件
  • 工作机会
  • 帮助
  • 新闻
  • 合作伙伴
  • 投资人
  • 附属机构
  • 安防
  • 社会影响力
  • 包容性与多样性
  • 联系我们
版权所有 © 2025 Unity Technologies
  • 法律
  • 隐私政策
  • Cookie
  • 不要出售或分享我的个人信息

“Unity”、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其分支机构在美国及其他地区的商标或注册商标(单击此处获取更多信息)。其他名称或品牌是其各自所有者的商标。

Hero background image

使用 Unity Tilemap 优化 2D 游戏的性能

获取提示以改善您使用Unity Tilemap开发的2D游戏和移动应用的性能。这里涵盖的主题包括场景大小、序列化、渲染器开销和批处理。
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。
请点击这里。

这些提示最适合那些对Unity的2D工具集有一定经验的用户。另一个适合专业创作者开发商业2D游戏的优秀资源是我们的电子书,2D游戏艺术、灯光和动画。

如果您是使用Unity开发2D游戏的新手,请从新用户的2D指南开始。

  • 一般性能提示
  • Tilemap的简要介绍
  • 更少的GameObjects
  • 更小的场景大小
  • 更少的碰撞体
  • 减少的渲染开销
  • 降低的剔除成本
  • 更少的批处理调用
  • 更快的帧率
  • 使用Sprite Atlas打包精灵
  • 为2D游戏创作者提供更多资源
Unity编辑器的截图
来自UNITY 2D项目LOST CRYPT的图像

一般性能提示

以下是一些需要考虑的一般性能提示:

  • 从一开始就考虑您资产(数据)的性能。如果这些元素性能不佳,您之后几乎无法优化代码。
  • 在您最低端的目标设备上进行性能分析。在整个项目开发过程中使用Unity Profiler,以及平台特定的性能分析工具,例如iOS设备的Xcode。
  • 在您最低端的目标设备上,不要使用超过可用RAM的三分之一。这确保您的内容能够在广泛的移动设备上良好运行(便宜的安卓手机在移动市场中仍然是最受欢迎的)。

有关更多2D优化技巧,请参阅以下资源:

  • 一轮精彩的2D技巧
  • 来自优化战壕的故事
  • 了解Unity中的优化
查看失落的密码
Unity - 使用 Tilemap 快速创建 2D 关卡
瓦片地图示例

Tilemap的简要介绍

Tilemap组件允许您使用网格覆盖上的瓷砖高效创建2D关卡。它由多个元素组成,包括:

  • 瓷砖类
  • 资源
  • 网格组件
  • 瓷砖调色板
  • 可脚本化的画笔

您可以使用精灵和游戏对象的组合创建2D关卡,并控制诸如排序层、Tilemap碰撞体和动画瓷砖等属性。您还可以绘制方形、六边形和等距精灵。

使用Tilemap绘制您的关卡,以便在应用于Tilemap游戏对象时,Tilemap Collider 2D组件会根据瓷砖的碰撞体类型设置自动生成一个碰撞体。

让我们看看与使用精灵构建的场景相比,您从Tilemap中获得的性能提升。

具有较少对象的瓦片地图
UNITY 2D 演示 DRAGON CRASHERS 中的瓦片地图

更少的GameObjects

使用瓦片地图可以减少加载时间,以及内存和 CPU 使用率。

如果你之前开发过 2D 游戏和应用程序,那么你知道你的游戏中可能会有大量的精灵,每个精灵都是单独的游戏对象。每个精灵游戏对象上都有组件,包括变换和渲染器,这些都占用内存。其他组件,如碰撞体,会带来 CPU 开销。

相比之下,瓦片地图为整个地图及其所有瓦片使用一个渲染器。这导致了更少的开销,因为它只处理自己的数据结构,而不是在内存中有多个数据结构。

拥有更少的游戏对象会导致更清晰的层次结构,这意味着你不必在复杂的列表中滚动以找到你需要的东西。

Unity - 使用 Tilemap 的更小的场景
两个序列化文件的比较,一个使用精灵(左侧),另一个使用瓦片地图(右侧)

更小的场景大小

Unity 瓦片地图减少场景大小。拥有更少的游戏对象和组件意味着从磁盘加载、反序列化和在运行时保持在内存中的对象更少。

在 Unity 中加载场景是一个两部分的过程:首先,从磁盘读取数据。这是在你的游戏中通常耗时最长的过程,尤其是在安卓设备上。然后数据被反序列化。反序列化是将数据从一种格式转换为另一种格式的过程。本质上,它从保存的状态恢复数据和对象。Unity 在内部进行序列化,因此每当它在编辑器和运行时加载场景文件时,它会将这些保存的文件转换为 Unity 对象。

在上面的图像中,你可以看到两个序列化场景文件的比较,一个使用瓦片地图,另一个使用精灵重新创建。感谢Pixel Reign提供的这个场景,来自他们的游戏Robbie Swifthand。

右侧是一个序列化的Tilemap部分,由四个瓷砖组成。所有瓷砖的规则,包括使用的瓷砖类型,都在Tilemap的顶部设置。每个后续瓷砖声明了诸如使用的瓷砖及其位置等属性。

左侧是一个精灵,带有变换和精灵渲染器组件。

从这个比较中可以清楚地看出,精灵序列化需要做多少工作。特别是,使用精灵的场景在其文件中有370,000行,而使用Tilemaps的场景只有30,000行。较小的项目和仓库大小导致更快的迭代时间和更顺畅的工作流程。

如果要将自己的场景视为文本文件,请进入您的编辑器设置,打开资源序列化模式,点击强制文本,并在.unity场景文件中打开文本编辑器。

Unity - 使用 Tilemap 减少碰撞体
2D瓷砖地图碰撞器与2D复合碰撞器结合使用

更少的碰撞体

您可以将2D瓷砖地图碰撞器与复合碰撞器结合使用。这不仅会减少碰撞器和精灵的数量,还会提高您的生产效率,因为每次更改时无需重建复杂的碰撞形状。复合碰撞器会处理这些。

瓷砖地图的使用案例
单个游戏对象及其精灵渲染器与瓷砖地图的使用案例

减少的渲染开销

如前所述,每个精灵都有一个精灵渲染器组件,拥有更多渲染器会要求CPU做更多工作,包括剔除准备和渲染清理的时间。通过使用瓷砖地图,您将拥有更少的渲染器组件,从而节省CPU的一些工作。

降低的剔除成本

场景中有多个相机意味着更多的渲染器。这增加了剔除成本。

在相机视图中,剔除的成本是每个渲染器、每个相机的。每个相机都必须对场景中的每个渲染器组件执行剔除检查,因此如果您为游戏设置了多个相机,使用瓦片地图将帮助您降低成本。

更少的批处理调用
帧调试器

更少的批处理调用

批处理是收集所有可以绘制的几何体,而不需要进行另一个 SetPass 调用。瓦片地图渲染器根据精灵的位置批处理几何体。结果是,瓦片地图渲染器向渲染管线发送的网格数量更少,但几何体更多,而精灵渲染器发送的网格数量更多,但几何体更少。如以下部分的表格所示,基于瓦片地图的场景的批次数显著减少。

您可以通过查看游戏视图中的统计面板来检查批处理情况。您还可以使用 帧调试器 来确定为什么项目没有批处理。

使用精灵和瓦片地图的场景表

更快的帧率

要达到 60 fps,每帧的渲染时间最多为 16 毫秒。当在旧款 iPhone 7 上分析示例场景时,基于精灵的版本每帧为 244 毫秒,而基于瓦片地图的版本每帧为 13 毫秒。

最后,基于精灵的场景的 RAM 使用量为 1.1 GB,这对于低端安卓手机来说太多了。基于瓦片地图的场景仅使用了 21 MB 的 RAM,使其适合在更广泛的移动设备上运行。

上述比较显示了两个场景之间性能的明显差异。

精灵图集演示
在《龙崩溃者》中使用精灵图集

使用Sprite Atlas打包精灵

精灵图集 是编辑器工具,允许您将精灵打包到纹理中,以优化内存使用和绘制调用。创建一个包含您在瓦片地图中使用的所有精灵的精灵图集资产,以便它们可以通过瓦片地图渲染器在一次绘制调用中批处理(只要所有精灵都适合单个纹理中)。

为2D游戏创作者提供更多资源

提升你的 2D 技能:我们的博客阅读列表提供了有关 2D 游戏开发的有用提示。

面向美术师的 2D 游戏美术、动画和光照:这本免费的电子书提供了利用 Unity 的 2D 工具集的最佳实践。

2D 工具概述:查看我们方便的概述,了解 Unity 为 2D 开发者提供了什么。

使用 Tilemaps 创建程序化图案 – 第一部分 和 第二部分:通过程序生成为您的游戏增添多样性。这些帖子解释了您可以与 Tilemap 和 RuleTile 一起使用的一些算法。