IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity Addressable Asset System 可寻址资 产系统,从零开始(一)——小姐姐的新烦恼 -> 正文阅读

[游戏开发]Unity Addressable Asset System 可寻址资 产系统,从零开始(一)——小姐姐的新烦恼

小姐姐系列更新啦

这又是另一条故事线了,为了表示之前总是放鸽子的歉意,带着小姐姐去了趟环球影城
在这里插入图片描述
玩的是灰常的开心,但是在结束的时候小姐姐又抑郁了起来,原来是明天上班又要去用Assetbundle做加载,自己又吃不消,
请添加图片描述
唉,看在?环球?这么大的份上😻😻😻,我对小姐姐说,我们一块来学下Addressable吧,超级好用!



🚩一、Addressable是什么

🖌?开始

在Unity 4中,Unity引入了Assetbundle系统,这个系统可以将资产打包成离散的单元,以便在运行时
动态加载。使用Assetbundle可以将资源与程序安装包分开。这可以让程序的初始安装包保持较小的体
积,同时可以让程序能动态更新资源。
尽管Assetbundle有很多好处,但它是一个偏底层的系统,在实际生产中使用Assetbundle是一项复杂
的任务。Unity中没有直观的工作流来支持assetbundle开发使用的整个生命周期。另外如果想要将
Unity中直接引用和加载资产的方式转到Assetbundle上会很麻烦。将程序从纯静态的内置内容迁移到能
够通过增量更新的动态加载内容,需要大量的重构和自定义编程。因此,对于许多(即使不是大多数)
开发人员来说,是很头大的一件事。

🖌?设计思想

??1.关注点分离:引用与打包资产
Addressables的主要功能是让你不再关心什么资源正在如何从哪里加载。任何资产,包括场景,
prefab,文本资产等,都可以标记为Addressable,并赋予唯一的名称。一旦标记为addressable,就可
以在代码中使用新的AssetReference类型来引用和加载。另外,可寻址资产可以作为内置内容进行打包
和加载,也可以打包成assetbundle以在运行时动态加载。通过这种关注点的分离,有关内容打包和分
发的决策可以推迟到上线之前,而无需更改逻辑代码。

??2.运行时内存管理
使用Assetbundle加载资源的优势在于:它可以从内存中卸载不再需要的资源。想要高效地跟踪加载了
哪些资源以及可以安全卸载哪些资源,在没有Addressable之前,是留给开发人员的复杂编程任务。现
在通过Addressable加载的资产及其依赖项,系统会自动进行引用计数,并且不再使用的assetbundle
及其依赖项会自动卸载。此外,Addressables提供了可视化Profiler,用于实时调试已加载的资产和
assetbundle引用计数。

??3.更快的迭代
Addressable为资产加载过程提供了一些重要的抽象概念,内容发生更改时可以更快地迭代。
播放模式模拟:无需打包过程即可直接从磁盘加载资产,同时仍提供通过事件探查器调试资产引用
计数的功能。
快速增量构建:Addressables基于新的*Scriptable Build Pipeline(可编程构建管道),可提高增
量构建的速度和可靠性。
Editor Hosting Services :内置的资源托管服务,用于将可寻址内容提供给局域网连接(也可以
利用花生壳,ngrok,natapp等转发到互联网)的设备。这种方法用于迭代设备上的内容非常快
捷,方便。

🖌?什么是Addressable Asset可寻址资产

通过将资产设置为“Addressable”,你可以使用该资产的唯一地址从任何地方获取它。不管该资产存在
本地应用程序中还是位于服务器上,可寻址资产系统都会找到并返回它。你可以通过它的地址加载单个
可寻址资产,也可以使用定义的自定义标签同时加载多个可寻址资产。

🖌?为什么要使用可寻址资产

Unity原有的资产管理方式很难用。可寻址对象缩短了迭代周期,使你可以将更多时间用于设计,编码
和测试应用程序。
迭代时间:通过地址引用内容非常有效。对内容的优化不再需要更改代码。
依赖关系管理:系统返回所请求内容的所有依赖关系,以便在将内容返回给你之前加载所有网格,
着色器,动画等。
内存管理:系统加载或卸载资产时,自动计数引用并提供强大的分析器,以帮助你发现潜在的内存
问题。
内容打包:因为系统可以映射并理解复杂的依赖关系链,所以即使在移动或重命名资产时,它也可
以有效打包。你可以轻松地为本地和远程部署准备资产,以支持可下载的内容和减小的应用程序大
小。

🖌?说人话

上面的都太过于官方了,总结一句话,就是Addressable是assetbundle的升级版本,可以界面可视化,好多繁琐的底层操作不需要再去关心了。

🚩二、Addressable安装

可寻址资产系统包含两个Package:
Addressable包(主要包)
Scriptable Build Pipeline 可编程构建管线包(依赖项)
当安装Addressable包时,Scriptable Build Pipeline包会自动安装。
💚💚💚注意:Addressables需要Unity 2018.3或更高版本。

??1、在Unity的菜单栏中打开:Windows > Package Manager
??2、在Package Manager中找到Addressables并安装
在这里插入图片描述

🚩三、Addressable准备可寻址资产

🖌?将资产标记为Addressable

方法1:在Inspector中标记Addressable,直接打勾就可以了,单击Addressable复选框,然后输入用于
标识资产的地址,默认是资产在Project中的路径。
在这里插入图片描述

方法2:使用Addressable窗口标记资产,选择 Window > Asset Management > Addressables 打开Addressables窗口。接下来,将所需资
产从Project窗口拖动到Addressables窗口中任一资产组(同一资产组的资产打包时会包含在一个文件
中)。
在这里插入图片描述

🖌?设置地址

资产的默认地址是项目中资产的路径(例如Assets / images / myImage.png)。要在Addressables窗口
更改资产的地址,右键单击该资产,然后选择“ Change Address”。
在这里插入图片描述

首次使用可寻址资产时,系统会在Assets / AddressableAssetsData文件夹中为你的项目保存一些编辑和
运行时的数据资产,应将其添加到版本控制中。

🖌?添加、选择Label标签

Addressable资产不仅可以通过地址加载,还可以通过Label进行批量加载。比如角色皮肤、不同质量的
纹理等等。
1.首先需要在AddressableAssetSettings中添加Label,要在Addressables窗口Tools——Labels
在这里插入图片描述
在这里插入图片描述
2、给资产设置Label,可以逐个设置,也可以多选批量设置
在这里插入图片描述

🖌?打包

在打包程序之前,需要将Addressable资产打包成游戏运行时可以使用的文件。此步骤不是自动的。你
可以通过编辑器或API打包以下内容:
要在编辑器中打包内容,请打开Addressables窗口,然后选择 Build > Build Player Content。
在这里插入图片描述

要使用API打包内容,请使用AddressableAssetSettings.BuildPlayerContent() ;
📀接下来会继续讲Addressable的详细用法,敬请期待吧📀


总结

欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。
如果各位看官觉得文章有点点帮助,跪求各位给点个“一键三连”,谢啦~

声明:本博文章若非特殊注明皆为原创原文链接
https://blog.csdn.net/Wrinkle2017/article/details/120437067
————————————————————————————————

💢💢版权声明

版权声明:本博客为非营利性个人原创
所刊登的所有作品的著作权均为本人所拥有
本人保留所有法定权利,违者必究!
对于需要复制、转载、链接和传播博客文章或内容的
请及时和本博主进行联系
对于经本博主明确授权和许可使用文章及内容的
使用时请注明文章或内容出处并注明网址
转载请附上原文出处链接及本声明

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:31:04  更:2021-09-26 10:33:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/19 16:36:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码