【Unity3D】基于AssetBundle实现资源热更新
创始人
2024-04-22 16:40:04
0

1 前言

        Unity3D 本地资源一般放在 Resources 目录下,但是 Resouces 文件夹的大小不能超过 2G,使用 AssetBundle 管理资源可以解决 Resources 文件夹受限问题。

        AssetBundle 主要用于管理资源,配合 AssetDatabase 和 AssetImporter 可以实现资源重命名,配合 BuildPipeline 可以实现资源压缩,配合 WWW 或 UnityWebRequest 可以实现加载服务器资源。下面简单介绍下相关接口:

        1)AssetBundle 获取资源名,加载、卸载资源

        静态方法: 

// 从文件中加载AssetBundle
public static AssetBundle LoadFromFile(string path)
// 从二进制数组中加载AssetBundle
public static AssetBundle LoadFromMemory(byte[] binary)
// 从流中加载AssetBundle
public static AssetBundle LoadFromStream(Stream stream)
// 卸载所有AssetBundle
public static void UnloadAllAssetBundles(bool unloadAllObjects)
// 销毁对象
public static void Destroy(Object obj)

        实例方法: 

// 获取所有资源名
public string[] GetAllAssetNames()
// 判断是否包含资源
public bool Contains(string name)
// 加载资源
public Object[] LoadAllAssets()
public T[] LoadAllAssets() where T : Object
public Object[] LoadAllAssets(Type type)
public Object LoadAsset(string name)
public T LoadAsset(string name) where T : Object
public Object LoadAsset(string name, Type type)
// 卸载资源, unloadAllLoadedObjects为false时不卸载已从Bundle中加载出的资源
public void Unload(bool unloadAllLoadedObjects)

        说明:入参 name 不区分大小写,建议使用小写。

        2)AssetBundleManifest 获取资源依赖

// 获取所有AssetBundles
public string[] GetAllAssetBundles()
// 获取指定assetBundleName的直接依赖
public string[] GetDirectDependencies(string assetBundleName)
// 获取指定assetBundleName的所有依赖
public string[] GetAllDependencies(string assetBundleName)

        说明:入参 assetBundleName 不区分大小写,建议使用小写。 

        3)AssetDatabase 获取所有资源名、删除资源

// 获取所有AssetBundle资源名
public static string[] GetAllAssetBundleNames()
// 根据assetBundleName删除AssetBundle
public static bool RemoveAssetBundleName(string assetBundleName, bool forceRemove)
// 刷新Project视图目录, 相当于右键手动刷新
public static void Refresh()

        4)AssetImporter 设置资源名

// 获取AssetImporter, 资源文件路径
public static AssetImporter GetAtPath(string path)
// 获取/设置资源文件名
public string assetBundleName { get; set; }

        5)BuildPipeline 压缩资源

// 压缩所有标记为AssetBundle的资源
public static AssetBundleManifest BuildAssetBundles(string outputPath, // 压缩文件输出路径BuildAssetBundleOptions assetBundleOptions, // 压缩算法BuildTarget targetPlatform // 平台
)
// BuildAssetBundleOptions.None: LZMA压缩算法, 压缩比大, 加载慢, 使用前需要整体解压
// BuildAssetBundleOptions.ChunkBasedCompression: LZ4压缩算法, 压缩比中等, 加载快可以加载指定资源而不用解压全部
// BuildAssetBundleOptions.UncompressedAssetBundle: 不压缩, 加载快

        6)WWW 获取网络资源

// 获取WWW
public static WWW LoadFromCacheOrDownload(string url, int version)
// 获取AssetBundle
public AssetBundle assetBundle { get; }

        说明:WWW 被 Unity3D 官方标记为过时了,建议使用 UnityWebRequest。

         7)UnityWebRequest 获取网络资源

UnityWebRequest webRequest = UnityWebRequestAssetBundle.GetAssetBundle(uri)
yield return webRequest.SendWebRequest()
AssetBundle assetBundle = DownloadHandlerAssetBundle.GetContent(webRequest)

2 资源命名

        

3 资源压缩

4 本地资源加载

5 使用WWW加载服务器资源

6 使用 UnityWebRequest 加载服务器资源

相关内容

热门资讯

美国商务部长卢特尼克:特朗普与...   美国商务部长卢特尼克在特朗普与加拿大总理卡尼会晤前接受Fox Business采访。  卢特尼克...
闪回至当年   □张金刚  日子,过着过着,就过成了当年。但在当下,总会时不时偶遇一个触点,带我打开记忆闸门,闪...
特朗普与马斯克“P图”互动但被...   美国白宫4日在社交媒体上发布美国总统特朗普手持光剑的《星球大战》风格AI图片。巧合的是,美国企业...
扬州广陵:广聚英才,激活产业发... 去年以来,扬州市广陵区聚焦“双城双区”战略,坚持产业、科技、人才“一体化”招引,推动科技创新和产业创...
超百万人次游东疆 转自:天津日报  本报讯(记者 马晓冬)5天,超100万人次——这是东疆综保区交出的“五一”假期“成...
一盘水饺背后的女性成长史   由刘伟强执导、马丽领衔主演的五一档新片《水饺皇后》正在全国热映中,票房持续领跑,截至5月5日13...
我的牛仔裤   □荆谦谦  我哥哥大二那年凭借经商的禀赋掘得了人生第一桶金。他把备战高考的我从教室里叫出来,要带...
从车间“倒腾匠”到行业领军工匠   吴双 通讯员 刘瑞雪 济南报道与毫厘较劲的“倒腾匠”  时光倒流至2000年,18岁的王新福背着...
“城市封面”全新亮相 转自:天津日报  本报讯(记者 廖晨霞)“五一”假期,天津津湾广场经过提级改造后全新亮相,以崭新的城...
劳模盖海波的“劳动节” 转自:天津日报  凌晨4时30分,当津城还沉浸在睡梦中,环卫工人盖海波已经完成了班组人员到岗情况核对...
未成年人岂能成为不当牟利的工具 转自:法治日报□ 蒲晓磊  国家网信办近日发布消息称,今年以来,网信部门持续强化未成年人网络保护,根...
上万人在施工,“大机场梦”渐行...   于泊升 济南报道  5月1日下午,一架客机从济南国际机场上空掠过,划出一道白色航迹。刚结束一轮工...
昌平帮青年走稳创业“关键第一步...   本报讯(记者 孙云柯)近日,昌平区试点建设北京青年人才创新创业生态示范区,启动实施了一揽子政策措...
今年西瓜节 来这嗨吃嗨玩 转自:天津日报  “五一”节假期,静海区台头镇中二堡村盘活闲置厂房改成的民宿项目工地上,一派繁忙景象...
入境免签带火山东游,韩国游客纷...   5月4日上午,搭载285名韩国游客的“新香雪兰号”邮轮抵靠烟台港,游客们有序走下舷梯,在烟台开启...
交通运输部门多举措服务保障返程... 转自:法治日报本报北京5月5日讯 记者刘欣 记者今天从交通运输部获悉,“五一”假期第5日,预计全社会...
百年商埠如何续写繁华   文/片 杜春娜 济南报道  五一假期,位于中山公园北门处的济南市开埠博物馆迎来试运行,引起广泛关...
“茶乡警务”护航茶产业发展 转自:法治日报□ 本报记者   吴良艺□ 本报通讯员 蒋  欣  谷雨时节,广西壮族自治区灌阳县黄关...
施工现场来了机器人“工友” 转自:天津日报  “五一”假期,我市道桥维修整治项目施工进度加快推进。市道桥事务中心通过智慧手段赋能...
让“沉睡的资产”焕发新生机 走进黄沙港渔港经济区,一座曾经破落不堪的烂尾楼如今已蝶变为生气盎然、热闹非凡的电商直播基地,创客网红...