Unity3D之AssetBundle资源加载封装

Unity使用AssetBundle加载资源 阅读详情

http://www.luzexi.com/unity3d%E4%B9%8Bassetbundle%E8%B5%84%E6%BA%90%E5%8A%A0%E8%BD%BD%E5%B0%81%E8%A3%85/


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封装的源码。源码通过VS2010编写,通过打成DLL放在项目里使用。

AssetBundle资源加载封装源码

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

 

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


【Unity3d】热更新Assetbundle资源以及需要注意的地方 热更新技术,是当前网络游戏的一项必要功能, 在此只讨论Assetbundle资源的更新, 不讨论代码的更新。 一、进行资源梳理切分,哪些资源是独立性较好的,依赖链清晰的,可以归纳到一个包的,把资源依赖的层级关键画好。 二、将资源分为两大类,一类为内置Resources资源,一类为Assetbundle资源     内置Resources资源或者叫AssetsLibrary,由Unity自行管 阅读详情

相关推荐

Unity3D的AssetBundle资源的打包和加载

在上述示例中,我们首先使用AssetBundle.LoadFromFileAsync()方法异步加载AssetBundle,并在加载完成后获取到AssetBundle对象。在上述示例中,我们创建了一个名为"myassetbundle"的AssetBundle,并将"Assets/Models/MyModel.prefab"和"Assets/Textures/MyTexture.png"两个资源添加到其中。通过使用AssetBundle,开发者可以更灵活地管理和加载游戏中的资源,提高游戏的性能和效率。

QscFramework的博客 527

Unity(五) Unity3D使用Assetbundle打包加载(Prefab、场景)转载原博客

PS:以前看了很多文章,还是未能成功的打包预制和场景,今天看了这位作者的文章步骤很详细,特此转发链接共大家一起学习 感谢原作者!特此转载收藏学习 1: 链接:http://www.cnblogs.com/unity3ds/p/5912729.html Unity3D使用Assetbundle打包加载(Prefab、场景) 按照步骤来做,轻松实现。 2

LinZhonglong的博客 5098

Unity3D之后版本中AssetBundle资源的打包与解析加载

通过使用BuildPipeline类进行资源的打包,以及使用WWW类和AssetBundle类进行资源的加载,我们可以实现在游戏运行时动态加载和使用AssetBundle资源。首先,我们构建了AssetBundle文件的路径。AssetBundle是Unity3D中一种常用的资源打包和加载方式,它可以将游戏中的资源(如模型、纹理、声音等)打包成一个独立的文件,然后通过解析加载该文件来获取资源。通过上述的代码示例,我们可以实现对AssetBundle资源的解析加载,从而实现动态加载游戏中的资源。

DllCoding的博客 445

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

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

qq_21407523的博客 1831

别再魔改LWIP了!用STM32CubeMX配置F407的TCP保活(KeepAlive)与自动重连

本文详细介绍了如何通过STM32CubeMX配置STM32F407的LWIP协议栈,实现TCP保活(KeepAlive)与自动重连功能,解决网络异常断开问题。文章提供了从基础环境配置到自动重连架构设计的完整指南,帮助开发者构建高可靠的网络连接机制,适用于工业物联网和嵌入式设备开发。

weixin_27038245的博客 234

FDTD Solutions-入射波长模式

经常在文献中看到仿真光源使用TM/TE模式,这个确定是十分必要的,决定了仿真结果。 但是也不能局限于选择TM/TE,因为不同领域、不同软件之间的使用习惯和命名可能不同。并且在现代光波导器件中,几乎全部 都是混合模式,或者称之为quasi-TE(准TE模式)和quasi-TM(准TM模式),多数情况下都简称为TE模式和TM模式。要知道 到底是TE模式还是TM模式,需要查看其电场的主分量(即振幅...

HECHUANWANG的博客 1万+

QFramework ResKit资源管理:从入门到精通的完整指南

在游戏开发中,**QFramework ResKit资源管理**是提升开发效率和游戏性能的关键所在。无论是新手开发者还是资深工程师,掌握ResKit都能让资源加载变得简单高效。 ## 🎯 什么是QFramework ResKit? ResKit是QFramework框架中的**核心资源管理模块**,专为Unity3D和Godot游戏开发设计。它提供了统一的API来管理各种资源类型,包括Ass

gitblog_00240的博客 1088

systemView的安装使用

systemView的安装使用

qq_33712422的博客 3963

SKFramework框架全解析:Unity3D开发效率与规范提升实战指南

在Unity3D游戏开发中,随着项目规模增长,UI管理、资源加载、数据持久化等基础模块的重复开发与混乱管理成为效率瓶颈。模块化框架通过提供一套预制的、松耦合的工具箱,将开发者从繁琐的底层基建中解放出来,使其能专注于核心玩法创新。其核心价值在于强制或引导项目采用结构化、规范化的代码组织方式,这对于团队协作与长期维护至关重要。具体到技术实现,框架通常封装了AssetBundle资源管理、基于事件中心的模块通信、以及数据驱动的UI系统等工程实践。例如,通过资源模块的引用计数与缓存机制解决内存管理难题,利用事件模块

weixin_28688385的博客 342

从FPGA工程师视角看CXP-12:如何用Xilinx GTX/GTH收发器搞定一条50Gbps的工业相机数据流?

本文从FPGA工程师视角详细解析了如何利用Xilinx GTX/GTH收发器实现50Gbps的CXP-12工业相机数据流传输。通过协议分析、硬件设计要点和FPGA逻辑实现,帮助开发者高效构建高带宽工业视觉系统,特别适合4K/8K高分辨率图像处理需求。

weixin_42533622的博客 281

分辨率太小 / Retina 模糊 / 全屏异常:一篇解决 VMware Fusion + Kali 显示问题(Xfce & GNOME 通用)

本文提供了在Mac(尤其是Retina屏)上运行Kali Linux时常见显示问题的完整解决方案。主要解决三类问题:分辨率太小、Retina屏模糊和全屏异常。核心思路是先安装open-vm-tools-desktop并重启,这是90%问题的根源。然后根据不同问题分别处理:调整DPI/Scale解决字体大小,避免双重缩放导致的模糊,以及通过窗口拉伸和重启解决全屏异常。文章还给出了针对Xfce和GNOME的最佳配置建议,并强调调试完成后应创建快照以便快速恢复。最后提供了速查表,方便用户快速参考关键步骤。

致力于分享在各类技术领域的学习与实践经验,涵盖编程、虚拟化、开源工具、网络安全等。 874

【Unity3D】基于AssetBundle实现资源热更新

Unity3D 本地资源一般放在 Resources 目录下,但是 Resouces 文件夹的大小不能超过 2G,使用 AssetBundle 管理资源可以解决 Resources 文件夹受限问题。AssetBundle 主要用于管理资源,配合 AssetDatabase 和 AssetImporter 可以实现资源重命名,配合 BuildPipeline 可以实现资源压缩,配合 WWW 或 UnityWebRequest 可以实现加载服务器资源。

little_fat_sheep 5239

FPGA调试利器:VIO与ILA在Vivado中的实战应用指南

本文详细介绍了Vivado中FPGA调试工具VIO与ILA的实战应用技巧。VIO作为虚拟输入/输出工具,可实时调整参数;ILA作为集成逻辑分析仪,能高效捕获内部信号。文章通过具体案例展示了如何配置ILA采样深度、触发条件,以及VIO的动态参数调整功能,帮助开发者提升上板调试效率,解决常见通信失败、数据不同步等问题。

weixin_42553471的博客 424

Unity3D AssetBundle打包与加载

Unity3D 简单的AssetBundle打包与加载 转载:Unity AssetBundle 从入门到掌握(适合初学者) 简单AssetBundle打包与加载问题总结

WenHui君_的博客 2813

别再只看图了!代谢组学OPLS-DA分析,R2Y和Q2Y到底怎么看才不踩坑?

本文深入解析代谢组学OPLS-DA分析中的关键指标R2Y和Q2Y,揭示如何避免过拟合陷阱。通过详细解读模型解释能力(R2Y)和预测能力(Q2Y),结合置换检验方法,提供完整的模型评估流程与实战建议,帮助研究者获得可靠的分析结果。

weixin_42638178的博客 196

vue支付项目-APP支付宝支付功能

如果用户已安装支付宝客户端,商家 App 唤起支付宝完成支付,支付完后跳回到商家 App 内,最后展示支付结果。如果用户没有安装支付宝客户端,商家 App 内会调起支付宝网页支付收银台,用户登录支付宝账号,支付完后展示支付结果。1.点击按钮开通或者续费,会验证是否选择会员商品以及对协议是否查看选中(这里根据项目需要自行验证,可忽略),验证通过打开选择支付方式弹窗页面,选择微信支付或者支付宝支付;4.可取消支付,放弃支付会返回会员页面,页面提示支付取消;1.判断支付方式,如果是2,则是支付宝支付方式。

总结前端开发中遇到的问题,分享前端知识 1万+

Unity3D中AssetBundle的打包和加载

Unity的资源管理是一个比较复杂的模块,如果管理不好,可能导致最终包体大小偏大,程序运行时候内存居高不下,因此了解并掌握Unity的资源管理显得特别重要。 Unity中资源一般存放在两个目录下,一个是Resource目录,另一个是StreamingAsset目录。放在Resource目录下的资源在打包的时候会被压缩并打包到安装包中(assets资源),只读,而在StreamingAsset目录...

Wei_Yuan_2012的专栏 1655

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

unity3d 动态加载资源Resources.Load和AssetBundle

1.首先总结下unity有哪几种资源类型 unity资源的类型: -a) Unity内置的常用asset, fbx\jpg... - b) textasset: txt、binary等,对应了它的TextAsset类,可以直接读入文本或者二进制byte -c) scriptable object 它是序...

Peter的博客 2712

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Unity3D AssetBundle的打包和加载

Unity3D AssetBundle的打包和加载 目录 1、博文介绍 2、具体思路和写法 (1)AB包的打包 (2)AB包的加载 (3)AB包卸载 3.资源包下载 4.推送 5.结语 1、博文介绍 本篇博客主要起记录和学习作用,简单的介绍一下AB包的打包和几种不同方法加载AB包的方式,若各位同学有幸看到本篇博客...

孙君的空间站 4648

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Unity3d发布Android版通过WWW加载本地AssetBundle资源

不久之前买了小米平板,就想着用Unity3d做个小游戏放在平板上玩玩,匆匆做了个资源加载界面就发布apk到平板上,结果提示资源加载失败,找不到资源文件。在网上找了半天资料都没解决问题,最后发现自己犯了个最愚蠢的问题,就是StreamingAssets文件夹名称有问题,我写成了StreamingAsset,真是被自己给坑到了。 下面总结下Unity3d发布Android版通过WWW加载本地

menghuangxiao的专栏 5904

Unity3D:动态加载资源(Resources.Load与AssetBundle.LoadAsset)

Unity3D动态加载一(Resources) 在Unity3D中Project视窗中创建文件夹:Resources。 将需要动态加载的文件放入其中,例如Texture,Sprite,prefab等等。 在脚本中调用API接口Resources.Load()相关接口即可。 例如: using UnityEngine; using UnityEngine.UI; public class Lo...

Calmer的博客 7209

提升Unity3D开发效率:AssetBundle资源加载与打包助手

提升Unity3D开发效率:AssetBundle资源加载与打包助手 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在Unity3D开发中,AssetBundle的打包与加载是优化游戏性能和加载速度的关键步骤。然而,这一过程往往复杂且耗时。为了解决这一痛点,我们推出了“AssetBundle资源加载,AssetBundle-Browser打包助手”项目。该项目提供了一...

gitblog_09748的博客 968

unity3d AssetBundle 资源热更专题

我们这期主要讲的是资源热更和管理 学习本课程 可以获得商业标准的 资源热更框架和源码,技术理论 能带来什么好处? 对于入职游戏开发岗位的开发者 比如面试官问:怎么做热更新 技术理论部分可以帮助你 在面试环节部分 游刃有余 对于独立游戏开发者 能收获一套热更框架,避免重复造轮子 在中大型手游产品中,都会包含热更新功能。 这项技术能为产品带来以下这些好处 在增加新内容时 1:不需要提交材料到平台审核,绕过审核手续,加快新版的迭代更新速度 2:玩家不需要重新下载安装包,减少版本更新迭代的用户流失 3 : 方便游戏

1916

Unity3d基础:加载AssetBundle资源

//通过AssetBundle资源名字加载并创建物体 public GameObject CreateAndLoadAssetBundle(string bundleName,string objName=null) { //路径 string url = Application.dataPath + "/" + "StreamingAsse...

QQhelphelp的博客 344
上一篇: 使用Unity3D的50个技巧:Unity3D最佳实践
下一篇: NGUI所见即所得之UICamera
CCCStudyer
博客等级 码龄16年 14粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值