原地址:http://www.cnblogs.com/88999660/archive/2013/04/03/2998157.html

Unity运行时刻资源管理

----------------------------------------------------------------------------------------

Asset Bundles

制作:BuildPipeline.BuildAssetBundle()

加载:AssetBundle.Load()

卸载:AssetBundle.Unload(bool unloadAllLoadedObjects)

unloadAllLoadedObjects = true:释放解压数据,所有已实例化的资源亦被释放。

unloadAllLoadedObjects = false:释放解压数据,已实例化的资源不释放。

Resource Folders

制作:Project视图中任意名为“Resources”文件夹下的资源,无论场景中是否用到。

加载:Resources.Load()

卸载:Resources.UnloadUnusedAssets(),实例通过Object.Destroy()释放。

工作方式:         所有Resources资源及其相关资源都存储于resources.assets中,但如果有资源被某场景使用,该资源则被存储于该场景对应的sharedassets<0~n>.assets中。         如果编译目标平台为Streaming Web Player,则情况略有不同。你可以在设置中通过First Streamed Level With Resources一项指定所有Resources资源跟随哪一场景(Level)加载。在该模式下,所有先于“First streamed Level”加载的场景,用到的Resource资源同上,都存储于其对应的sharedassets中;后于“First streamed Level”加载的场景,其用到的Resource资源,却存储于resources.assets中。

----------------------------------------------------------------------------------------
Streaming Web Players

该模式中的Streaming是以场景(Level)为单位的,你可以在编译设置中指定各个场景的载入顺序,Unity Web Player会按该顺序自发异步加载各场景。同时,Unity也提供了通过WWW加载.unity3d场景文件的API,使开发者对场景加载有更灵活的控制权。     实际上,WWW可以用于网络下载任意资源(纹理、文本、二进制文件),视频和音频也可以通过WWW下载,而且可以做到边下载边播放。
AssetBundle

----------------------------------------------------------------------------------------

想打包进AssetBundle中的二进制文件,其文件名后缀必须为“.bytes”,Unity会将其视为TextAssets对待。
AssetBundle bundle = www.assetBundle;

获取WWW.assetBundle的一刻,由WWW下载的数据压缩包被解压,AssetBundle对象被创建,此时你可以用AssetBundle.Load()实例化资源了。
除非使用AssetBundle.LoadAll()获取所有资源,否则无法得到一个AssetBundle中的资源列表。一般做法是在该AssetBundle中放置一个定好名称的TextAsset,在其中维护一份所有资源的名称列表。
一个AssetBundle包可以引用其他AssetBundle包中的资源。制作时,需要调用BuildPipeline.PushAssetDependencies()和BuildPipeline.PopAssetDependencies()函数对;加载时,被引用的包需要先于引用包加载。 另外,重编这种包需要开启BuildAssetBundleOptions.DeterministicAssetBundle,以保证每次重编时所使用的资源ID都是一样的。
你可以在一个游戏里使用另一个游戏的AssetBundle,前提是该AssetBundle中所引用的资源,要么存在于该AssetBundle中,要么已经被载入了游戏中。为确保AssetBundle引用的资源被编进同包中,制作时可以使用BuildAssetBundleOptions.CollectDependencies选项。

----------------------------------------------------------------------------------------
AssetDatabase Unity Editor使用AssetDatabase维护项目中的所有资源文件,Unity使用这套API取代传统的filesystem。这是一个Editor类,所以只有在名为“Editor”的文件夹下的Script中才有用。

BuildPipeline.BuildStreamedSceneAssetBundle()或BuildPipeline.BuildPlayer(..., BuildOptions.BuildAdditionalStreamedScenes)生成的场景包,使用WWW下载后,只需调用WWW.assetBundle,而不需AssetBundle.LoadAll(),即可激活包中的场景,即调用WWW.assetBundle后,你就可以通过Application.LoadLevel()来载入场景了。

转载于:https://www.cnblogs.com/123ing/p/3703885.html

Unity运行时刻资源管理相关推荐

  1. Unity 项目中资源管理(续)

    转载自:https://zhuanlan.zhihu.com/p/28324190 上次和大家分享了Unity项目中的资源管理主要讲资源配置以及资源配置工具,Unity资源配置在资源管理中处于基础地位 ...

  2. Unity中的资源管理-AssetBundle(1)

    本文分享Unity中的资源管理-AssetBundle(1) 在上一篇文章中, 我们简单介绍了Unity中的资源和基本的使用, 今天我们详细介绍下使用AssetBundle来管理资源. AssetBu ...

  3. 如何实现运行时刻的多态?(c++)

    首先,要明确运行时刻的多态依赖于类的继承与虚函数. (可以去看我之前写的文章) 基本做法是:在基类与派生类中定义函数原型相同的两个虚函数,然后定义基类的指针,用积累的指针指向不同的派生类对象,通过虚函 ...

  4. Unity中的资源管理-几种常见的序列化方式

    本文分享Unity中的资源管理-几种常见的序列化方式 在网游客户端的开发中, 大部分数据只需要从服务器获取数据之后存放在内存中, 但是仍然有一些数据需要做序列化, 并持久化存放在客户端本地. 比如用户 ...

  5. 编译原理运行时刻环境

    编译原理运行时刻环境 运行时存储组织概述 编译程序是将源程序的算法描述部分和数据说明部分,分别翻译成机器目标代码和数据存储单元,最终获得目标程序. 目标程序在目标机环境中运行时,都置身于自己的一个运行 ...

  6. Unity中的资源管理-对象池技术(3)

    本文分享Unity中的资源管理-对象池技术(3) 在上两篇文章中, 我们一起学习了普通类的两种对象池实现, 今天接着介绍Unity中GameObject(主要是预制实例化对象)的对象池. GameOb ...

  7. Unity中的资源管理-引用计数

    本文分享Unity中的资源管理-引用计数 在前面的文章中, 我们一起学习了对象池的基本原理和几种实现, 今天和大家继续聊聊另一个资源管理中比较重要的技术: 引用计数. GC的基础知识 GC(Garba ...

  8. 关于Unity中的资源管理,你可能遇到这些问题(UWA报告)

    关键字 AssetBundle 资源制作 纹理\网格\材质\Shader\音频\动画 Lightmap 一.AssetBundle 相关 Q1:Unity中的SerializedFile是怎么产生的? ...

  9. 关于Unity中的资源管理,你可能遇到这些问题

    关键字 AssetBundle 资源制作 纹理\网格\材质\Shader\音频\动画 Lightmap 一.AssetBundle 相关 Q1:Unity中的SerializedFile是怎么产生的? ...

最新文章

  1. [2008.06.10 23:20:00] 心智成熟的旅程
  2. 洛谷 P4463 [集训队互测 2012] calc(拉格朗日插值优化DP)
  3. java neo4j rest api_Neo4j REST API使用教程
  4. 程序员的编程能力与编程年龄
  5. PHP 笔记——操作MySQL数据库
  6. 循序渐进学习Linux--第二天更新
  7. RTT内核对象——对象理解
  8. 如何做好软件测试管理工作,如何才能做好软件测试工作
  9. http://blog.sina.com.cn/s/blog_4aae007d0100inxi.html
  10. 亚马逊在德国新设AI研发中心,与马克思普朗克系统研究所亲密合作
  11. C++实现分割读取txt文件以及对齐打印设置
  12. php分页3 1,经典php分页代码与分页原理(1/3)
  13. 关于esp32的省电模式的WiFi连接
  14. 拓端tecdat|r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
  15. 系统集成项目管理工程师历年真题下载地址
  16. 黑马程序员---java基础-Java之IO
  17. CSS新招式,临时记一下
  18. 图解Activity启动流程
  19. SqlSugar 6.导航查询
  20. git报错error: index uses extension, fatal: index file corrupt

热门文章

  1. gem install 和 bundle 区别
  2. Android 4 开发环境配置中的诸多陷阱
  3. MATLAB学习笔记(十四)
  4. 加入域时出现以下错误 登陆失败 该目标账户名称不正确_微信支付踩坑合集:微信小程序支付失败是什么原因?持续更新...
  5. java swt 布局_Java开发网 - 基于SWT的类XUL实现: SWT-XUI
  6. 没有workstation_这才是Win10的旗舰版:WorkStation版独享功能测试
  7. 在此iphone上尚未受信任_通知:这5款iPhone过保依然可以免费维修
  8. android删除电池功能,Android教程:删除电池信息增加待机时间
  9. 康乐主机系统怎么安装php,Kangle EP面板详细安装说明
  10. PSTN和互联网——无线接入与定位(1)