转载自:http://www.luzexi.com/unity3d/游戏通用模块/前端技术/2014/04/16/Unity3D之AssetBundle资源加载封装/

GitHub:https://github.com/luzexi

Unity3D之AssetBundle资源加载封装。在《临兵斗者三国志》中我使用了U3D的AssetBundle资源动态加载机制,原因是某些画面资源太多,IO阻塞过慢会造成游戏奔溃。在开发过程中,遇到点问题:

1.当资源更改变化时,如何能快速得反应到开发中。

解决方案:

我使用宏定义UNITY_EDITOR来判断是否是开发编辑状态。当处于开发编辑状态时,自动读取指定目录下U3D本身资源,而不使用AssetBundle。这样就达到了当prefb变化时能快速反应到开发编辑中。而当不是处于编辑状态时,则正常使用异步加载读取AssetBundle。这个方式唯一的毛病就是,必须让所有U3D程序员都非常清除明白,如果写错,编辑模式下会没问题,发布后会出问题,所以需要检查。

2.当不同资源之间有重复的资源时如何将AssetBundle空间占有量最小化。

解决方案:

GUI资源之间有特别多的重复的问题,挑出几个重复得特别厉害的,比如ICON图集,公用图集。在打包期间把他们设为共享资源,并在加载时首先加载共享资源,这样既节省了AssetBundle空间占有量,也节省了内存。这个方式的毛病是当你将资源更改要打包某个资源时,需要将所有与共享有关的资源重新打包一遍。

3.如何应对自动释放资源问题。

解决方案:

在游戏中有指定资源释放和自动释放所有AssetBundle资源以销毁内存(这里不是指销毁U3D内存,而是AssetBundle内存,U3D内存管理分图片内存,AssetBundle内存,编译程序)。销毁指定资源就按正常来没有争议。销毁所有资源就要有点措施了,因为有些资源是不能被销毁的,因为它们是共享资源,需要全程跟着游戏走,所以当自动销毁所有资源时,将共享资源排除在外。并且在销毁后调用Resources.UnloadUnusedAssets();和GC.Collect();

4.打包AssetBundle方式。

解决方案:

打包AssetBundle方式有几种:1.单资源打包,也就是说一个.prefb或Texture打一个包。2.多个资源打包,将某些资源都打成一个AssetBundle,节省了几个资源包之间的共享资源也减小了多个AssetBundle引起的空间扩大问题。但并不是说所有项目都是多个资源打成一个AssetBundle是好的。《临兵斗者三国志》就是一大部分使用单一打包,而共享资源使用多个资源打成一个AssetBundle的方式。

最后奉上本人对AssetBundle封装的源码。https://github.com/luzexi/Unity3DGameResource

你也可以去我的github上查看找我做的一些源码插件,如果喜欢的话可以star或者fllow。

转发请注明出自:http://www.luzexi.com

Unity3D之AssetBundle资源加载封装相关推荐

  1. unity 异步加载网络图片_一个非常好用的AssetBundle资源加载器

    Loxodon Framework Bundle是一个非常好用的AssetBundle加载器,也是一个AssetBundle冗余分析工具.它能够自动管理AssetBundle之间复杂的依赖关系,它通过 ...

  2. 【从零开始游戏开发】Unity3D AssetBundle资源加载和封装 | 全面总结 | 建议收藏

    你知道的越多,你不知道的越多

  3. 【Unity3D日常开发】Unity中的资源加载与文件路径

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  4. Unity3D资源加载与内存管理

    Unity3D资源加载与内存管理 Unity 3D中的资源加载 AssetBundle运行时加载: Unity3D占用内存太大怎么解决呢? 关于内存管理 举两个例子帮助理解 额外问题 Hog的评论引用 ...

  5. Layaair 3D资源加载(Unity3D 导出资源)

    Layaair 3D资源加载 layaair 预加载3D资源(Unity3D 导出资源)  和  2D 资源还是有些区别的. 2D资源的预加载 https://blog.csdn.net/nicepa ...

  6. 6. Unity3d Lua框架 - xLua - UIManager UI管理系统:提供UI操作、UI层级、UI消息、UI资源加载、UI调度、UI缓存等管理

    UIManager.lua – UI管理系统:提供UI操作.UI层级.UI消息.UI资源加载.UI调度.UI缓存等管理 – 注意: – 1.Window包括:Model.Ctrl.View.和Acti ...

  7. Unity资源加载发布到移动端iphone/ipad

    Unity资源加载发布到iOS平台的特殊路径 using UnityEngine; using System.Collections; public class TestLoad : MonoBeha ...

  8. Unity资源加载入门

    写在前面 本文转载自:https://gameinstitute.qq.com/community/detail/123460,供自己学习用,如有疑问,请移步原创. 引言 Unity的资源加载及管理, ...

  9. Unity资源加载管理

    转载链接: https://bbs.gameres.com/thread_800362_1_1.html 我理解的资源管理 举一个不恰当的例子来描述我所理解的资源管理(因为我实在想不出更合适的例子了) ...

最新文章

  1. 交换机应用寻找10个完美的因素
  2. MDNN:一种用于药物-药物反应预测的多模态深度神经网络
  3. STM32 基础系列教程 22 - CAN
  4. 基于Erlang的并发程序简要
  5. 为什么8位有符号数的取值范围是-128~+127
  6. spring+quartz 完整例子
  7. 10玩rust_C++工程师的Rust迁移之路(5)- 继承与组合 - 下
  8. 与Java EE和Camel的轻量级集成
  9. CPU 是如何执行任务的?
  10. ubintu yum装mysql_Ubuntu 下安装Mysql centos8 下安装mysql8.0
  11. docsify,文档生成利器!
  12. 白化(Whitening) PCA白化 ZCA白化
  13. 我九点钟上计算机课用英语怎么说,人教版四年级英语下册 第5次课 Unit 2 What time is it 时间的表达方式...
  14. 使用python实现往手机发短信(基于twilio)
  15. day18-正则表达式
  16. oracle试算平衡表查询,试算平衡表
  17. 路由交换技术实战七 FR 网络中配置 OSPF( 完成版 )
  18. linux下的office 速度慢,针对Libreoffice卡顿奇慢的怪病,这里有一味特效药
  19. java冒泡排序(java冒泡排序经典代码)
  20. Python综合小应用 —— 胖子老板香烟管理系统

热门文章

  1. Vue浏览器图标修改不起作用
  2. 第二十七章 数论——快速幂与逆元
  3. 2022 斯坦福AI报告:中国霸榜AI顶会,但引用量最低
  4. 电脑上的文件删除不掉,需要管理员权限怎么办?
  5. 程序人生-我已经努力了七年
  6. 如何写好科研论文(雨课堂)-期末考试答案
  7. WORD自动编号的图表标签重新编号
  8. 英文书《用unreal来学习c++》_股市高人经常用“开盘八法”来预判股票一天的走势,可以学习学习...
  9. 树莓派输出pwm波c语言,02树莓派4B—C语言编程——PWM
  10. 树莓派播放音频时3.5mm接口没有声音怎么办?