(二)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
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 Dlls
• User’s dlls and external dlls (for example: DirectX)

Native Memory: Internal Allocators本机内存: 内部分配器
• Default
• GameObject
• Gfx 图形和渲染相关
• Profiler事件探查器
               5.x: 在 Dll 中使用本机的分配器公开的 API

Managed Memory托管的内存
• 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( 在需要时将分配新的堆块)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值