unity unity3d场景优化化 static 有用吗

说说unity项目的优化 - 推酷
说说unity项目的优化
最近由于公司一个项目的需要(马上就上微信了呦),我被临时抓过来搞了一个月的unity。
主要是帮着搞一下性能的优化以及解决一些兼容性问题。因为我之前对Unity和移动开发都不是很了解,所以简单总结一下,积累点经验。
首先是选定基准平台,android是小米1,ios是iphone4。先在小米1上简单的profile了一下,发现android平台的帧率非常不稳,对profile工作影响很大。然后试了一下iphone4,发现ios上的帧率非常稳定,而且每一部分的开销非常明确,果断暂时放弃andriod,基于ios展开后续工作。
说一下unity自身提供的高大上的Profile功能,可以实时看到个各部分的开销,比如脚本,动画,渲染,声音等。但在实际的优化过程中这东西的帮助不大。比如你看到渲染的开销最大,但你依然不知道渲染什么东西的开销最大,也就无从优化。但有一个应用场景,这个功能是非常有效的。例如你知道在某个时刻帧率会突然降低,这时你就可以从曲线中看到是那一时刻究竟是什么东西的开销变大了。这时你就可以进一步分析问题原因了。另外在脚本中添加profile关键字也会非常有用。
接下来说一下xcode里的debug navigator,在这里面可以实时看到CPU和GPU的占用情况。这玩意实在是太有用了。因为手机游戏里面的东西本来就比较少,稍微关点东西马上瓶颈就变了。如果每次都要自己想办法判断是cpu瓶颈还是gpu瓶颈会非常麻烦。但有了这个,就会方便很多。
经过测试分析,角色和场景是大头,其中角色是cpu瓶颈(CPU蒙皮和顶点数据传输),场景是GPU瓶颈。然后我们对美术资源进行了梳理,大量合并了draw call。角色还减了面。简化了一些特效(特效对CPU和GPU的开销都比较大)。一轮优化过后帧率大幅提升。
后续测试过程中发现,某些效果出现时帧率会大幅降低。一开始以为是这些效果本身的渲染开销过大。后来将这些效果大幅简化后问题依然存在。继续反复测试最终发现,非均匀缩放动画在unity中非常的慢,一个动画在iphone4上能有10ms的开销。最后将非均匀缩放都改成均匀缩放,效果不变,性能大幅提升。论坛中也有人问过这事儿,这算是unity的一个坑吧。
类似的还有一个效果我们会每帧动态生成mesh,这个也很慢,后来改成每帧只重新生成index,性能提升。
最终还是提供了一个功能,可以在低端平台上选择关闭一些效果来换取更流畅的帧率。
兼容性方面就说一个比较典型的吧。我们发现在很多android手机上在某些情况下会经常闪屏。后来发现是跟clear次数过多有关(UI用到了好几个Camera,每个都会clear深度),其实UI和特效渲染时都不需要clear,修改后问题解决。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&当前位置: >
Unity3d游戏场景优化
时间: 15:38 来源:互联网 作者:网络 浏览:
Unity3d游戏场景优化LOD(Level-of-detail)是最常用的游戏优化技术 。如果你的程序可以定制开发应用LOD的模块,当然是很美好的事情。不过如果没有也没关系,大家可以使用UniLOD这个第三方的LOD插件。免费共享的哦(向UniLOD开发者致敬,赞美伟大的共享精神!!!)
以下是简介:功能众多,涉及到场景管理,模型优化,资源管理员,及显示效果变化,且不需要脚本编写,全部通过编辑器实现!目前此unity3d扩展为开源的,你可以下载到源代码来研究学习。特色:?1.自动简化网格体(Windows + Unity Pro only)&&&&&&&&&&&&&&&&&&&&&根据用户的设定自动减面。?&2.Level-of-detail 编辑器&&&&&&&&&&&&&&&&&&&&&方便快捷的创建LOD组件来切换不同的品质级别或通过设定距离数值来显示&&&&&&&&&&&&&&&&&&&&&或隐藏物体。&&&&&&&&&&&&&&&&&&&&&&创建你的 LOD 场景&&&&&&&&&&&&&&&&&&&&&&方便快捷的用 LOD 组件来替换现有组件将现有的场景转换为拥有LOD管理的场景。&&&&&&&&&&&&&&&&&&&&&&&将单个的mesh和贴图成组来降低draw calls&&&&&&&&&&&&&&&&&&&&&&&将场景存储为 标准 assets 或者 asset 包?&&3.场景管理&&&&&&&&&&&&&&&&&&&&&&&&Streaming 支持&&&&&&&&&&&&&&&&&&&&&&&&&Stream your scene as the player moves through the world&&&&&&&&&&&&&&&&&&&&&&&&&&资源自动 loaded/unloaded&&&&&&&&&&&&&&&&&&&&&&&&&&Stream from resource folder, or asset bundles&&&&&&&&&&&&&&&&&&&&&&&&&&&Minimal performance impact with resource buffering&&&&&&&&&&&&&&&&&&&&&&&&&&可以根据需要调整, 速度或者内存&&&&&&&&&&&&&&&&&&&&&&&&&&Takes care of switching quality levels as the player moves though the world&&&&&&&&&&&&&&&&&&&&&&&&&&充分优化, 使用最少的资源?&&&4.资源管理&&&&&&&&&&&&&&&&&&&&&&&&&&&所有asset bundles 和普通资源都以标准方式载入。&&&&&&&&&&&&&&&&&&&&&&&&&&&Keeps reference counts on your resources and 自动释放?&&&5.完整植入 Unity 并只需要通过UnityEditor API来操作。&&&&&&&&&&&&&&&&&&&&&&&&&&无需输入代码Sorry,场景管理和资源管理的有些内容没搞懂就不乱翻译了。&当然,Unity3d自己的地形是自带LOD功能的,当你刷好你的地形后,你只需要调整Pixel Error这个参数即可。Unity3d会自动计算生成地形的LOD,无需你做其他的任何设置。要提醒朋友们的是,如果你使用了Lightmap,那么同时使用LOD的时候会有一些麻烦,我们的办法是制作模型的时候事先做好第二套uv(不使用Unity的自动计算lightmapUV功能),而且所有LOD的第二套UV的分布位置都一致,很费工。不知道有没有更好的方法!!!&
(责任编辑:雷小雨)
免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。
猜你也喜欢看这些 ??????
其他类型的Unity入门 ??????}

我要回帖

更多关于 unity3d static 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信