真Unity3d_Profiler之优化入门

先占个坑,反正几乎很多文章都只能完成三分之一

如果你没有程序经验,也没有游戏制作经验,这个文章可能并不能帮到你,因为不会会做一些幼儿园科普

这个文章是专门给那些有几年游戏开发经验,几年996下来,混成一个混子,却自以为是的人看

然而,当你想要去用Profiler去解决你的游戏项目的事情,可能也不需要看别人文章

本文的主要参考是:

Preventing casual mistakes such as this is essential for good productivity, 

since experience tells us that if we dont explicitly disallow something,

then someone, somewhere, at some point, for whatever reason, will do i anyway.

This is likely to cost us a frustrating afternoon hunting down a problem that eventually turned out to be caused by human-error

人为错误这个东西真的很恐怖。。。。

我之前的博客也说过,这世界上没有人想写错误的代码,却没有任何人可以写不错误的代码

这确实是经验之谈,和国外大佬最终得出的是同样的结论

和擅长推卸责任,善于吹嘘工作流,工作方法的某组长是殊途同归

软件来到2020年,其实这么多年来,其实大家都有在做同样类似一件事情:

“”过程管理“”

其中,有流于形式,有不知所以然,也有完全不接受的团队,你老板是把你当民工看没错,可我们真不是

其实,这个文章想讨论Profiler的用法,就是过程管理里面重要的一环,。

在我看来,Profiler甚至是“”过程“中最重要的一环,为什么这么说呢?

如果你用过Profiler,你会觉得它既不能定位到某一个脚本,又不能长时间监控,好像还不如UWA,或者perfdog好用。

“”Profiler实在太烂,还不如自己写一个。“,这坊间“”大牛“”和“”天才“”的大多数说法,我也不好评论太多

首先,从Unity3x开始就一直沿用至今的Profiler,整个UnityEditor都被改掉了,但是Profiler几乎没什么更新,具体可看4.x~2018.3的截图(后补)

其实,就是这么一个稳定的,可视化的工具,我倒觉得前无古人,后也应该无来者

 

在这里,要科普一下幼儿园知识:

1.Profiler的性能并不代表真机的性能,

这个特性直接劝退大部分使用者,但是如果Profiler这个不能不能直接反映真机性能,那某某大V博客的十条优化建议中的哪条又能代表真机性能呢?

有这么一个说法“真理是越辩越明的”

我TMD的想问问这到底是哪一个天才文人说的?在科学界,真理是用来推导另一个真理的,TMD真理就是一看就是真理,还需要你这幼儿园智商的人来辩论?当然真理并不是牛人光看就能得出的真理,其中过程很复杂,有测试,有验证,有推论,不过要是你只有幼儿园智商也不需要了解这么多,你只要知道现阶段我们生活中,工作中能接触到,能确定是真理的真理,其实在19世纪初已经被当年的大牛全部发现,推导和实验证明完全了,现在2020的你是几乎不可能创造出一个我们肉眼所及的人事物的真理。我们现在的工作和应用,最主要需要做的是分辨出哪些是真理,哪些不是,选出其中正确的真理来安排和扩展,远离眼高手低的同仁即可。

其实Profiler,已经证明用了同样一个检测逻辑在Pc 环境反馈出正确并且及时的监控性能,这套监控逻辑行的通!而同样的逻辑是完全适用于PC之外的手机端,例如Anroid或者IOS的性能瓶颈其实是大部分相通,除非你的ios手机不需要cpu也不需要内存就能使用,

所以,Profiler这个工具在经历了Unity的多个版本,好几年的迭代,还能存在已经说明是一个官方推荐并支持的工具,而且明显地能一定程度证明了Profiler的稳定性,和通用性,作为开发者,我们需要做的应用是:用Profiler去连接PC,或者Android做不同的分析,确实,你可能无法简易地连到不同客户端,不好意思,我也拖后腿,但就是你要是能把单一逻辑搞通了,对你的逻辑思维也有莫大帮助,起码你能分辨什么是真理,也可能你“以为”是真理的东西后来发现并不是。对的,你以为你写了几年程序就真具备科学素养了?你真还没入门呢,一般人也确实不可能一上来就写跨平台的代码,而必须通过不断的错误处理,工作历练才可能具备的能力。是的,你用Unity3d做的这个游戏其实是一个极其复杂的过程,是跨平台的,说远了,再科普第二条幼儿园知识

2.Profiler即使在你不勾选Editor的情况下,还是可能监控到Scene(Editor)界面的,

所以,不要在Scene和Game两个界面同时展示的时候,做Profiler分析和性能监控

3.Profiler有Bug,

已经有很多人,在很多问答额论坛,很多不同的版本都提到过Physic峰值的问题,就算你整个场景只有1个cube,也会莫名地有碰撞的效能问题出现,有人说解决了,有人说没解决,官方也说有跟进,总之是没人能说出是什么问题

4.所有的效能基本源于Hierarchy和Camera

如果你做过Cocos2dx,或者从底层搭建一个游戏引擎,可能更能体会。但是你若是一个游戏新人,完全不懂反而可能幸运,如果你懂一点计算机和数学,大学里又不小心学了《矢量运算》这门课,你可能会和某大V一样,认为3D引擎厉害的地方在于绘制一个原尺寸物件和一个原尺寸100倍的物件是相等效能的,Hierarchy基于矢量是没错;矢量可以几乎不用损耗,无限放大缩小是没错。如果用传统2D的像素做3D效果会是成千成万倍的性能,然而现在市面上大部分3D引擎损耗并不会比2D多多少,所以3D引擎比较高效能是没错,但3D引擎还不至于说能脱离物理,用了3D引擎,3D算法就可以性能碾压2D,就好像你想要一个白富美,真的三选一好了,做人不要那么贪,游戏真的是一个还算复杂的综合体,基于Hierarchy的同时也受限于Camera的绘制,所以,貌似现在网上目前还没有人完全能说明白怎么优化,这个文章,我,也是希望从profiler这个切入点,讲明白如何优化3D

5.UI和场景,其实是同一套3D性能机制,又基于不同的逻辑

UI就是和场景同一套东西,因为官方不可能同时维护一套3D场景编辑器和一个2D_UI编辑器的,我们使用Unity的UGUI编辑UI,说白了,编辑UI需上下左右,还是前后,和3D的上下左右前后是一致的,我们只要确定:Unity的UI和场景可用同一套分析方法分析效能,问题需分别监控,也需分别优化

6.Profiler不但不能真实反映真机的性能,可能连你想要的性能都不能反映

1

发布了294 篇原创文章 · 获赞 52 · 访问量 77万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览