笔试面试——unity基础篇

加载AssetBundle

主要两种方式,分别是new WWW(url)和WWW.LoadFromCacheOrDownload
new WWW是无论什么情况都从指定的URL中下载资源,并加载到内存中
WWW.LoadFromCacheOrDownload是把AssetBundle写入到缓存中,然后在需要加载AssetBundle时,再从缓存中读取AssetBundle,达到一个加速效果,而且只在内存中保存一些必要的缓存指针信息,因此非常省内存。首次加载时略慢,之后很快。

协程原理

协程其实就是一个IEnumerator(迭代器),IEnumerator 接口有两个方法 Current 和 MoveNext() ,前面介绍的 TaskManager 就是利用者两个方法对协程进行了管理,只有当MoveNext()返回 true时才可以访问 Current,否则会报错。迭代器方法运行到 yield return 语句时,会返回一个expression表达式并保留当前在代码中的位置。 当下次调用迭代器函数时执行从该位置重新启动。
Unity在每帧做的工作就是:调用 协程(迭代器)MoveNext() 方法,如果返回 true ,就从当前位置继续往下执行。

AssetBundle.Unload(false)

当参数是false时,会释放掉assetbundle里面的关于资源的压缩文件数据,记录着关于该资源的一些数据(应该也保存着该资源的引用)
AssetBundle.Unload(false):释放AssetBundle文件内存镜像
AssetBundle.Unload(true):释放AssetBundle文件内存镜像同时销毁所有已经Load的Assets内存对象

资源管理

使用缓冲池
按资源的位置及加载方式分类:
普通资源(Normal) 这类资源存储这工程中Resources目录外, 运行是存储于本地,自动加载。引用方式为直接引用,加载与引用都不需要参数
动态资源(Resources) 这类资源存储与工程中的Resources目录下, 运行时存储于本地,运行时动态加载。Resources.Load
集合资源(Bundle) 以AssetBundle形式存储于本地或网络中。加载时使用WWW方式加载,加载时需要Bundle存放的url路径,版本号等参数。
外部资源(External) 这类资源存储在项目外, 运行时可能存储于本地也可能存储于网络中, 以自定义的方式加载和引用, 加载及引用时所需的参数也需要自己定义。

猜你喜欢

转载自blog.csdn.net/crayon_chen/article/details/80151256
今日推荐