深圳Unity3D培训
达内深圳龙华中心

150-1322-7143

热门课程

深圳Unity3D培训机构:这是一个充满传感器的世界 - 深圳达内

  • 时间:2017-07-17
  • 发布:深圳Unity3D培训
  • 来源:达内新闻

深圳Unity3D培训机构:这是一个充满传感器的世界 - 深圳达内

既然要聊Unity3D运转时刻的内存优化,那咱们天然首先要晓得Unity3D游戏引擎是若何分派内存的。也许能够分红三大部分:

    Unity3D外部的内存
    Mono的托管内存
    多少咱们自己引入的DLL或许第三方DLL所需要的内存。

第3类不是咱们存眷的重点,以是接下来咱们会分离来看一下Unity3D外部内存和Mono托管内存,末了还将阐发一个官网上Assetbundle的案例来阐明内存的治理。

Unity3D外部内存

Unity3D的外部内存都邑寄存一些甚么呢?列位想一想,除用代码来驱动逻辑,一个游戏还需要甚么呢?对,各类资本。以是简单总结一下Unity3D外部内存寄存的器械吧:

    资本:纹理、网格、音频等等
    GameObject和各类组件。
    引擎外部逻辑需要的内存:渲染器,物理系统,粒子系统等等

Mono托管内存

由于咱们的游戏剧本是用C#写的,同时还要跨平台,以是带着一个Mono的托管情况明显必须的。那末Mono的托管内存天然就不能不放到内存的优化领域中停止斟酌。那末咱们所说的Mono托管内存中寄存的器械和Unity3D外部内存中寄存的器械毕竟有何分歧呢?实在Mono的内存分派便是很传统的运转时内存的分派了:

    值范例:int型啦,float型啦,布局体struct啦,bool啦之类的。它们都寄存在客栈上(留意额,不是堆以是不触及GC)。
    援用范例:实在能够广义的懂得为各类类的实例。好比游戏剧本中对游戏引擎各类控件的封装。实在很好懂得,C#中确定要有对应的类去对应游戏引擎中的控件。那末这部分便是C#中的封装。由于是在堆上分派,以是会触及到GC。

而Mono托管堆中的那些封装的工具,除在在Mono托管堆上分派封装类实例化以后所需要的内存以外,还会牵扯到其面前对应的游戏引擎外部控件在Unity3D外部内存上的分派。

举一个例子:

一个在.cs剧本中申明的WWW范例的工具www,Mono会在Mono托管堆上为www分派它所需要的内存。同时,这个实例工具面前的所代表的引擎资本所需要的内存也需要被分派。

一个WWW实例面前的资本:

    紧缩的文件
    解紧缩所需的缓存
    解紧缩以后的文件

想知道更多关于IT行业的信息吗?想远远不如行动,行动起来,一起加入达内,一起进入IT行业,跟着达内的脚步,一起走进如今的互联网信息时代,带给你不一样的色彩生活——【深圳Unity3D培训

深圳达内

上一篇:深圳Unity3D培训机构:深圳达内教你怎么玩转虚拟现实 - 深圳达内
下一篇:深圳Unity3D培训班:Unity3D项目优化从何下手 - 深圳达内

深圳Unity3D培训机构:Unity3D重要知识点1-30 - 深圳达内

深圳Unity3D培训机构:Overridable Functions可重写函数 - 深圳达内

深圳Unity3D培训机构:Functions函数 - 深圳达内

深圳Unity3D培训机构:这是一个充满传感器的世界 - 深圳达内

选择城市和中心
贵州省

广西省

海南省