Unity头顶UI优化

前言


多人同屏在线游戏或者战斗场景复杂的手游,角色或者模型的头顶UI往往非常头疼。举个例子,1个场景中有N个角色,每个角色对应一个UI。我们考虑最简单的情况,UI有一个Text显示名字,一个Image显示血量。2者相互重叠。UGUI在一般情况下会为我们合并同个canvas下相邻深度,材质,纹理相同的drawcall(说的不够严谨,其具体的策略可以去了解,不是本文重点)。但是显然这里我们会得到 2*N个dc。这个消耗是非常巨大的。

解决思路


建立一个mesh,创建一个文本的submesh,一个图片的submesh。计算所有需要绘制的text和image 顶点,uv,color,分别保存, 并设置到对应的材质。使用canvasrender渲染mesh。这样子我们仅仅需要2个dc(甚至一个dc),便可以完成渲染。
这种方法可以大大减少dc的带来cpu的沉重消耗,虽然我们付出了重新计算mesh的 代价,但是从性能上来说是值得的。
这个方法有些优化方法和不足之处。在之后有时间,我把对应的代码和shader分享的时候,在分析。现在先记录个思路。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、界面制作 Q1:UGUI里的这个选项 ,应该是ETC2拆分Alpha通道的意思,但是在使用中并没起作用?请问有...
    hcq666阅读 2,964评论 0 57
  • 原文地址 http://www.fx114.net/qa-75-172454.aspx 使用Profiler工具...
    IongX阅读 5,918评论 1 11
  • Unity编辑器基础 1.请描述游戏动画有几种,以及其原理。 主要有关节动画、单一网格模型动画(关键帧动画)、骨骼...
    豆铮阅读 4,643评论 0 6
  • 在刚开始学习 iOS 开发的时候,我看的是斯坦福大学的公开课CS193P,里面大部的内容都是使用 Storyboa...
    麦兜菠萝油王子阅读 883评论 1 0
  • 用平淡的语气,描述着令人叹息的经历 仿佛这个世界存在就毫无意义 自身的悲剧全都因别人而生 有点失落 有点无聊
    淡水鹅阅读 244评论 0 1