unity资源管理

article/2025/10/21 20:10:09

unity资源一般,分为两个目录:Resources和StreamingAssets,下面我们就来了解下,这两个目录 如何使用,有什么区别。

Resources
放在Resources里边的资源,会全部打进包体,且会压缩。这里边的资源,也不能进行修改和更新。适合小游戏或单机游戏等。

一般放入那些资源?
1.整个游戏生命周期都存在,比如场景切换loading,固定的配置等
2.占用内存资源比较小:头像,道具底框等
3.不会热更的资源,不需要替换的资源
4.尽量不要在Resource放很多的资源,可减少包体的大小。

如何加载?
在这里插入图片描述
传入参数:Resource.load 是文件名,Resources.LoadAll 既是文件名又是文件夹名。文件后缀 可以省略。

	//得到文件AResources.Load("A");//得到NullResources.Load<Texture2D>("A");//得到A文件夹下3贴图Resources.Load<Texture2D>("A/3");//得到 A文件和文件下3个子文件Resources.LoadAll("A");//得到 A文件夹下3贴图Resources.LoadAll<Texture2D>("A");//显式释放已加载的Asset资源Resources.UnloadAsset();//释放所有没有引用的资源Resources.UnloadUnusedAssets();

StreamingAssets
StreamingAssets文件夹下的文件,会原封不动的打入包体,主要存放一些二进制文件。它是可以从外部服务器更新并替换的。

目前老项目有一些 使用:AssetBundle,如果是新项目推荐使用Addressables。

1.AssetBundle
AssetBundle就是一个资源捆绑包,一个AssetBundle里可以包含多种Asset。

1.AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;
2.AssetBundle自身保存着互相的依赖关系;
3.压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输;
4.把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小;

分组策略:

1.把经常更新的资源放在一个单独的包里面,跟不经常更新的包分离
2.把需要同时加载的资源放在一个包里面
3.可以把其他包共享的资源放在一个单独的包里面
4.把一些需要同时加载的小资源打包成一个包
5.如果对于一个同一个资源有两个版本,可以考虑通过后缀来区分 v1 v2 v3 unity3dv1 unity3dv2
Unity3D引擎对纹理的处理是智能的:不论你放入的是PNG,PSD还是TGA,它们都会被自动转换成Unity自己的Texture2D格式。

Texture2D纹理压缩
在这里插入图片描述

	1.PC平台:DXT1和DXT5,有损压缩2.Android平台:ETC1压缩率高,但不支持透明贴图。ETC2支持透明贴图,内存会比ECT1高一点。3.IOS平台: PVRTC压缩率高,性能好,存在失真情况。4.适合多有平台:NPOT:Non Power of Two Textures 无二次幂限制的纹理。RGBA16:中清晰中压缩,移动平台基本不会直接使用。对于需要放大、拉伸的图片,Unity原生对Dithering抖动的支持不好,会有非常明显的颗粒感。RGBA32:高清晰无压缩,内存占用大,移动平台基本不会直接使用。ASTC:压缩后画质好、自由度高,有多种格式可以选择4x4~12x12、不要求图片尺寸,推荐使用。需要设备GPU支持 OpenGL ES 3.1及以上。在不支持的设备上,贴图会解压成RGB(A),然后与压缩的贴图一起存储在内存中,会增加纹理加载时间和增加额外内存!

查看纹理压缩简介 DXT PVR ETC

在这里插入图片描述
加载外部AB资源

//加载bundle方式1
UnityWebRequest request = UnityWebRequest.Get(uriPath);byte[] results = request.downloadHandler.data;
AssetBundle ab = AssetBundle.LoadFromMemory(results);//加载bundle方式2
UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(uriPath);AssetBundle ab = (request.downloadHandler as downloadHandlerAssetBundle).assetBundle;

2.Addressables
Addressables 是基于AssetBundle,进行了一些自动的改进。

Addressables基础学习,可参考这篇文章。
创建静态Groups ,增量更新,可参考这篇文章 文章2

如何导入Adressables?
1.打开Window -> AssetManager,找到Adressables,进行安装。
在这里插入图片描述2.安装后,打开window -> Asset Management -> Adressables - Groups
刚开始,需要先创建个配置。
在这里插入图片描述点击初始化按钮后,会在Assets目录生成AddressableAssetsData目录。

Addressable目录
AddressableAssetSettings配置:
在这里插入图片描述
Profiles:
配置分组默认使用,本地和远程资源地址。
在这里插入图片描述
Catalog:
热更资源列表文件,有这个文件,才知道每次需要更新那些文件。
Build Remove Catalog: 勾选才会生成Catalog版本文件,配套需要分组选择 Remote。
Disable Catalog Update on Startup:
勾选:禁止自动更新Catalog,需要自己写代码手动更新,更易于控制。
不勾选:自动更新,第一次调用Addressables.LoadAssetAsync等函数加载资源前,自动调用Addressables.InitializeAsync 和Addressables.CheckForCatalogUpdates 和 Addressables.UpdateCatalogs 进行资源更新,阻塞所有资源加载和实例化,直到完成。

Group Template:
在Assets/AddressableAssetsData/AssetGroupTemplates目录右键
Create->Addressables->GroupTemplates/BlankGroupTemplate创建新模板
注意:此目录下有默认模板Packed Assets,也可修改默认模板
在这里插入图片描述
Content Packing & Loading
BuildPath: Bundle文件生成到那个位置
Load Path:运行时,加载的地址
最终打包后,这个Group的位置信息,加载地址,还会被catalog记录.

Include In Build: 勾选:打包时,build时资源会导出。

content update restriction:
CannotChangePostRelease :静态组,发布之后不允许被修改,有新资源可增量更新,新创建一个资源上传,保留远程旧资源。
CanChangePostRelease: 动态组,每次发布时都会全量更新【直接替换旧资源】。

Bundle Mode:
PackTogether:一个组一个bundle文件,一般不需要这样。
PackSeparately:组内每个资源一个bundle文件,更新时那个有变化就更新那个。
PackTogetherByLabel:组内每个资源标签一样的,生成一个bundle文件。

Bundle Nameing Mode:
Append hash to filename: 在bundle文件名字后面追加一个hash码。
Use hash of filename: bundle文件名字会变成hash码,对比文件不是很容易,根据情况可不用。

Cache Clear Behavior:
Clear When Space Is Needed In Cache:缓存中需要空间时清除,一般比较适合Local
Clear When New Version Loaded:当有新版本时,删除旧版本,一般比较适合Remote

在AssetSettings配置添加模板:
在这里插入图片描述
Addressable Group面板

这个是 最重要的面板,大部分分组工作在这里操作。

在这里插入图片描述
分组设置:移除,简化名字,设置为默认,指定Inspect位置,重命名,创建新组

在这里插入图片描述

ImportSetting
用这个插件,来管理自己的分组资源,会比较方便。

导入AddressableImport插件
在这里插入图片描述
设置Addressable Import Setting,可以增加多个规则,每个规则就是一个分组。规则根据项目需求添加后,点击保存。

在这里插入图片描述保存后,右键Check Folders,导入分组,一般上线发版前,执行一次,后续使用增量更新。有新资源时,可在新资源目录,右键执行 reimport,如果无反映可在 Assets根目录下执行 reimport。

在这里插入图片描述
设置为默认的分组,在inspector面板勾选addressable,会将资源放入到默认分组。
在这里插入图片描述Local Build Path:使用默认的就行,一般会生成在:项目\Library\com.unity.addressables\aa\下面,无需更改,发布打包时,会将此目录的文件复制到Assets\StreamingAssets下面。

生成Bundle文件
第一次发布时: 执行一次 Build -> New Build -> Default Build Script。会生成 Catalog.hash 和Catalog.json文件。
第二次发布时: 执行Build ->Update a Previous Build ,否则APP要重新发布。

增量更新
建议Group使用 CannotChangePostRelease

	1.点击Group面板的Tools->CheckForContentUpdateRestrictions2.在弹出的窗口中,选择build的平台选中对应的.bin文件3.弹出的窗口中看到当前修改过的内容(无内容修改则为空),点击ApplyChanges4.若有静态资源修改,Group面板会自动创建一个Content Update分组,静态组中修改过的内容会移动到这个分组,默认为Remote。5. 点击Group面板的Build->Update a Previous Build,在弹出的窗口中仍然选中第2步的.bin文件。6. Build完成后,手动将RemoteBuildPath下的文件拷贝到指定的服务器即可。注意事项:1.不要手动在Group面板修改Group的内容2.在构建apk包后不要再随意执行Import插件的CheckFolder操作,否则在后续的增量更新中会将导致更新内容变大。3.当在后续更新中新增ImportSetting规则时,应在规则匹配的目录下执行CheckFolder操作。

全量更新:
建议Group使用 CanChangePostRelease

	1. Group面板Build->Update a Previous Build,在弹出的窗口中选中上次.bin文件。2. Build完成后,手动将RemoteBuildPath下的文件拷贝到指定的服务器即可。

打出的bundle文件:
优先级: 图集 ->资源 ->皮肤,优先打入图集,其次是资源,最后才是prefab。

如果只导出prefab,资源会包含在prefab对应的bundle文件,但是这个资源动态使用Addressables.LoadAssetsAsync加载时会找不到。

加载prefab对应的bundle文件时,若是有引用图集,会自动下载引用图集
在这里插入图片描述


http://chatgpt.dhexx.cn/article/7o8MUYUI.shtml

相关文章

Unity中的资源管理-资源类型和基本使用

本文分享Unity中的资源管理-资源类型和基本使用 真不容易, 经过几篇文章的铺垫, 我们终于进入正题了. 今天继续给大家聊聊资源管理中的基础知识: 资源的类型和基本的使用. Unity中的资源类型 这一部分在官方文档里介绍的很清楚, 有兴趣的同学可以自行跳转: 如果不愿意看官网…

【Unity3D】资源文件 ③ ( Unity 资源包简介 | 导出 Unity 资源包 | 导出资源包的包含依赖选项 | 导入 Unity 资源包 | Unity 资源商店 )

文章目录 一、Unity 资源包简介二、导出 Unity 资源包1、正常导出 Unity 资源包2、导出资源包的包含依赖选项 三、导入 Unity 资源包四、Unity 资源商店 一、Unity 资源包简介 将 Project 文件窗口 中的 Assets 资源进行打包 , 就会得到一个 资源包 Unity Package , 后缀为 &qu…

图嵌入 DeepWalk

文章目录 图表示学习-图嵌入 DeepWalk1 图嵌入2 随机游走-Random walks3 DeepWalk3.1 Hierarchical Softmax3.1.1 哈夫曼树3.1.2 Logistic Regression3.1.3 Softmax 回归3.1.4 Hierarchical Softmax 3.2 模型训练 图表示学习-图嵌入 DeepWalk 1 图嵌入 目标&#xff1a;将节点…

对DeepWalk的理解

DeepWalk的理解 如今我们都处于大数据时代&#xff0c;同时我们也身处于各个网络当中&#xff0c;列如通信网络&#xff0c;交通网络等等。我们如何将网络中的信息用我们计算机能懂的方式展现出来&#xff0c;这就是网络表示。而deepwalk主要是用来表示网络的一种方式&#xf…

KDD 2014 | DeepWalk: 社会表征的在线学习

目录 前言Abstract1.Introduction2.Problem Definition3.Learning Social Representations3.1 Random Walks3.2 Connection: Power laws3.3 Language Modeling 4.Method4.1 Overview4.2 Algorithm&#xff1a;DeepWalk4.2.1 Skip-Gram4.2.2 Hierarchical Softmax4.2.3 Optimiza…

DeepWalk

原文 《DeepWalk: Online Learning of Social Representations》 亮点 In this paper we introduce deep learning (unsupervised feature learning) techniques, which have proven successful in natural language processing, into network analysis for the first time.…

【论文精读实战】DeepWalk: Online Learning of Social Representations

DeepWalk: Online Learning of Social Representations 本文是我参加Datawhale的CS224W图机器学习时的笔记&#xff0c;第一次学习图机器学习&#xff0c;对DeepWalk这篇开山之作的理解。 论文的三位作者均来自纽约州立大学石溪分校&#xff0c;杨振宁和丘成桐也曾在此教学。 …

Deepwalk深度游走算法

主要思想 Deepwalk是一种将随机游走和word2vec两种算法相结合的图结构数据的挖掘算法。该算法可以学习网络的隐藏信息&#xff0c;能够将图中的节点表示为一个包含潜在信息的向量&#xff0c; Deepwalk算法 该算法主要分为随机游走和生成表示向量两个部分&#xff0c;首先…

DeepWalk阅读笔记

DeepWalk是一种学习网络中节点的表示的新的方法&#xff0c;是把language modeling的方法用在了social network里面&#xff0c;从而可以用deep learning的方法&#xff0c;不仅能表示节点&#xff0c;还能表示出节点之间的拓扑关系&#xff0c;也就是表现出社会网络的社会关系…

论文阅读|DeepWalk: Online Learning of Social Representations

论文阅读|DeepWalk: Online Learning of Social Representations 文章目录 论文阅读|DeepWalk: Online Learning of Social RepresentationsAbstractIntroductionProblem DefinitionLearning Social RepresentationsMethod实验设置Related Work我的看法参考资料 Abstract Deep…

大致了解一下DeepWalk

大致了解一下DeepWalk 讲到DeepWalk&#xff0c;不得不说的Word2VecCBOW模型CBOW模型的理解CBOW模型流程举例 Skip-Gram模型模型假任务模型细节隐层输出层直觉下一步 一些常用的trick词组降采样常用词采样率Negative Sampling选择 negative samples DeepWalk步骤相关算法 转载于…

[论文阅读] (25) 向量表征经典之DeepWalk:从Word2vec到DeepWalk,再到Asm2vec和Log2vec(二)

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

DeepWalk论文详解

DeepWalk算法报告 Deepwalk是网络表示学习的经典算法之一&#xff0c;是用来学习网络中顶点的向量表示&#xff08;学习学习图的结构特征即属性&#xff0c;并且属性个数为向量的维数&#xff09;。 该算法通过截断随机游走学习出一个网络的社会表示&#xff0c;输入是一张图…

DeepWalk原理理解:DeepWalk: online learning of social representations

文献&#xff1a;DeepWalk: online learning of social representations 对比阅读了几篇关于网络表示学习的文献&#xff0c;其中一篇包括DeepWalk的提出&#xff0c;下面将自己对于论文的理解和论文的笔记组织好记录下来。 deep walk 的提出是针对网络表示学习的稀疏性提出来…

DeepWalk模型的简介与优缺点

1、DeepWalk [DeepWalk] DeepWalk- Online Learning of Social Representations (SBU 2014) word2vec是基于序列进行embedding&#xff1b;但是&#xff0c;实际上实体之间的关系越来越复杂化、网络化。这个时候sequence embedding------>graph embedding。 图的定义&…

[论文阅读] (24) 向量表征:从Word2vec和Doc2vec到Deepwalk和Graph2vec,再到Asm2vec和Log2vec(一)

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

PyG基于DeepWalk实现节点分类及其可视化

文章目录 前言一、导入相关库二、加载Cora数据集三、定义DeepWalk四、可视化完整代码前言 大家好,我是阿光。 本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代…

【图嵌入】DeepWalk原理与代码实战

DeepWalk 基础理论 了解过 NLP 的同学对 word2vec 应该不陌生&#xff0c;word2vec 通过句子中词与词之间的共现关系来学习词的向量表示&#xff0c;如果你忘记了&#xff0c;可以看看我之前的博客&#xff1a; 【word2vec】篇一&#xff1a;理解词向量、CBOW与Skip-Gram等知…

DeepWalk算法(个人理解)

DeepWalk 什么是网络嵌入 将网络中的点用一个低维的向量表示&#xff0c;并且这些向量要能反应原先网络的某些特性。 一种网络嵌入的方法叫DeepWalk&#xff0c;它的输入是一张图或者网络&#xff0c;输出为网络中顶点的向量表示。DeepWalk通过截断随机游走(truncated rando…

deepwalk详解

目录 1. 算法思想2. 随机游走3. 如何把随机游走中得到的信息用来点表示学习&#xff1f;4.适用场景5. 不足和改进 1. 算法思想 源于word2vec,word2vec通过语料库中的句子序列来描述词与词的共现关系&#xff0c;进而学习到词语的向量表示。deepwalk则使用图中节点与节点的共现…