本文主要是介绍(二)Unity5.0新特性------unity内部:内存 和 性能(以及Unity5的升级优化),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们的脚本代码里经常会需要访问gameObject引用或者某个组件的引用,最好的方式当然是在脚本Awake的时候就把这些可能访问的东西都缓存下来;如果需要访问临时gameObject实例的某属性或者临时某组件的gameObject实例, 在能够确保组件一定存在(可以使用 [ RequireComponent ( typeof ( AudioSource ))] 如果没有自动添加移除不了! )的情况下,可以用属性访问,毕竟属性访问比GetComponent要快上一倍,但是如果不能确定组件是否存在,甚至是需要对组件的存在性做判断时,一定不要用对属性访问结果判空的方式,而要用GetComponent,这里面节省的开销不是一点半点。
而在unity5中你是没得选择了,因为没有了属性访问器。 看看下图的 GameObject类的对比。(4.6和5.0版本)
unity内部:内存 和 性能
Topics
• Memory Overview
• Garbage Collection
• Mesh Internals
• Scripting
• Job System
• Memory Overview
• Garbage Collection
• Mesh Internals
• Scripting
• Job System
一、 Memory Overview
Memory Domains内存域
• Native (internal)本地 (内部)
• Asset Data: Textures, AudioClips, Meshes
• Game Objects & Components: Transform, etc..
• Engine Internals: Managers, Rendering, Physics, etc..
• Managed - Mono
• Script objects (Managed dlls)
• Wrappers (包装类)for Unity objects: Game objects, assets,components
• Native (internal)本地 (内部)
• Asset Data: Textures, AudioClips, Meshes
• Game Objects & Components: Transform, etc..
• Engine Internals: Managers, Rendering, Physics, etc..
• Managed - Mono
• Script objects (Managed dlls)
• Wrappers (包装类)for Unity objects: Game objects, assets,components
• Native Dlls
• User’s dlls and external dlls (for example: DirectX)
• User’s dlls and external dlls (for example: DirectX)
Native Memory: Internal Allocators本机内存: 内部分配器
• Default
• GameObject
• Gfx 图形和渲染相关
• Profiler事件探查器
5.x: 在 Dll 中使用本机的分配器公开的 API
• Default
• GameObject
• Gfx 图形和渲染相关
• Profiler事件探查器
5.x: 在 Dll 中使用本机的分配器公开的 API
Managed Memory托管的内存
• Value types值类型 (bool, int, float, struct, ...)
• Value types值类型 (bool, int, float, struct, ...)
• 在堆栈内存中存在。当从堆栈中移除时取消分配。没有GC。
• Reference types (classes) 引用类型 (类)
• 在堆上存在,当长时间不再被引用时都由mono/.net GC删除。• 包装为 Unity Objects :
• GameObject• Assets : Texture2D, AudioClip, Mesh, …• Components : MeshRenderer, Transform, MonoBehaviour
Mono Memory Internals
• Allocates system heap blocks for internal allocator(为内部分配器分配系统堆块)
• Will allocate new heap blocks when needed( 在需要时将分配新的堆块)
这篇关于(二)Unity5.0新特性------unity内部:内存 和 性能(以及Unity5的升级优化)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!