Rendering Profiler
.
Rendering Statistics Window
渲染统计窗口:
Time per frame and FPS | 每帧花费的时间和帧率(每秒多少帧)注意,这个数字只包括帧更新和渲染游戏视图所花费的时间,不包括编辑器中绘制场景视图所花费的时间 |
Batches | “批处理”是指引擎试图将多个对象的呈现合并到一块内存中,以减少由于资源切换造成的CPU开销。 |
Saved by batching | 合并的批次数。 |
Tris and Verts | 绘制的三角形和顶点的数量 |
Screen | 屏幕的大小,以及它的抗锯齿水平和内存使用情况。 |
SetPass | 渲染通过的次数。每一次传递都需要Unity运行时绑定一个新的着色器,这可能会带来CPU开销。 |
Visible Skinned Meshes | 所呈现的蒙皮网格的数量。 |
Animations | 播放的动画数量。 |
Memory Profiler module
Memory module 表示应用程序中分配的总内存的计数器. 您可以使用内存模块查看诸如加载对象的数量和它们在每个类别中占用的总内存等信息. 也可以看到每帧 GC allocations的分配
Using the memory module when profiling in the Editor
在编辑器中配置应用程序时,内存模块显示的所有数字都表示编辑器中的内存使用量,而不是应用程序的发布平台。这些数字通常比在发布平台上运行时要大,因为运行Unity编辑器会使用特定内存来存储对象,编辑器窗口使用额外的内存。
要获得更精确的数字和应用程序的内存使用情况,请通过“Attach to Player”菜单将分析器连接到正在运行的播放器。
Chart categories
Category | Description |
---|---|
Total Allocated | 应用程序使用的总内存 |
Texture Memory | Textures使用内存数 |
Mesh Memory | Meshes 使用内存数 |
Material Count | Material 的数量 |
Object Count | The number of native object instances in your application |
Total GC Allocated | GC heap使用多少内存 |
GC Allocated | GC heap为每一帧分配多少内存 |
Simple view
Simple 在每帧的基础上实时显示内存在Unity中的使用情况。
The areas covered by this are:
- Total: 总使用内存
- Unity: 本机Unity代码中的内存分配量,由本机内存管理器系统跟踪,并根据它们的类型、源和平台特定的分配模式在内存池中分配。
- Mono: 托管代码使用的总堆大小和使用的堆大小。这个内存被垃圾回收。
- GfxDriver: :驱动程序在 Textures, render targets, Shaders and Mesh data.的预估量
- Audio: 音频系统的估计内存使用量
- Video: 视频系统的估计内存使用量
- Profiler: Profiler的估计内存使用量
Detailed view
- Other: 既不是 assets, GameObjects
, 也不是 components的信息,比如unity为不同的系统使用的内存. - Not Saved: 对象被标记为 DontSave
- Builtin Resources: Unity Editor 资源 or Unity 默认资源,比如shader
- Assets: 自带资源或者导入的资源
- Scene Memory:游戏对象和附带的组件
当你在asset或者scene memory中点击一个物体,他会在场景中显示
Note: 在 Other 种类下, 在System.ExecutableAndDlls 下的内存是只读内存. 操作系统可能会根据需要丢弃这些内存,然后从文件系统重新加载它们. 这回降低内存的使用率.
Memory Profiler package
https://docs.unity3d.com/Packages/com.unity.memoryprofiler@0.1/manual/workbench.html
这个插件需要advance的unity,需要破解版的unity,是内存肥
Physics Profiler
Physics Profiler展示的是静态物体的处理
See also Physics Debug Visualization.
Properties
Property | Function |
---|---|
Active Dynamic | 处于激活状态的 non-Kinematic Rigidbody 物体的数量 |
Active Kinematic | 处于激活状态的 Kinematic Rigidbody 的数量 |
Static Colliders | 带有 Collider但本身没有或者父物体没有Rigidbody组件的游戏物体.如果 GameObjects 或者他的父物体 有 Rigidbody 组件, 则它不计数. |
Rigidbody | 带有Rigidbody 组件的物体,不管有没有激活 |
Trigger Overlaps | 重叠触发器的数量,成对出现,就是两个碰撞体重合了,前提打开istrigger |
Active Constraints | 开启了 constraints选项的物体 |
Contacts | 场景中所有碰撞体之间的距离小于某个值的数量,包括trigger overlap 的数量.contacts 不一定是接触,而是两者之间的距离小于某个值. Refer to Collider.contactOffset and ContactPoint.separation for more details. |
Notes:
-
这个也不一定准,如果想要获取精确的数量,可以用 FindObjectsOfType
-
Physics Profiler 不显示未激活的 Rigidbody 的组件.
Using the Physics Profiler to understand performance issues
你可以选择 CPU Usage Profiler模块,检测 Physics.Processing 或者 Physics.Simulate 调用的次数
如果调用次数接近10说明有问题,首先,降低physics 的模拟品频率,增大fixedupdata的时间,如果还存在,检查是什么让图形处理器处理那么长的时间
-
Pxs:PhysX求解器”是“PhysX solver”的缩写,它是一种物理引擎的工作,关节需要它来完成,同时也可以解决身体重叠时的接触问题。
-
ScScene: 用于场景更新、宽相位和窄相位运行、物体整合(由于外力和爆破力在空间中移动)所需的任务