「这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战」。
作为一名优秀的开发者,对于技术的探求应该是永无止步的,如何让自己更进步,那就只有不停的学习,不停的充电.而这些都都是说起来容易做起来难,坚持才是难的地方 --蛙哈哈
Addressable详解-02
1.如何使用Addressable Assets
1.1通过地址加载或者实例化
你可以在运行时加载或者实例化一个Addressable Asset。当加载一个asset的时候,会连它的所有依赖项一起加入到内存中,以便你可以正常使用这个asset。但这并不会自动把asset放入场景中,所以必须自己去实例化。调用Addressables提供的实例化接口,会加载这些asset并且将它们立即添加到场景里去。
如果要从脚本访问一个asset,需要提供一个string类型的地址。然后调用UnityEngine.AddressableAssets命名空间下的下列方法:
Addressables.LoadAssetAsync ("AssetName");这个加载指定地址的asset。
Addressables.InstantiateAsync("AssetName");这个实例化指定地址的asset,并且添加到场景中
注意:LoadAssetAsync and InstantiateAsync都是异步操作。你需要提供一个回调函数给调用资源加载的逻辑。当加载结束的时候,会调用这个传入的回调函数。
1.2使用AssetReference类
AssetReference类提供了一种访问Addressable Assets的方法,并且不需要知道它们的地址。可以通过下列步骤:
1、从Scene的hierarchy界面或者Project 界面选择一个GameObject。
2、在Inspector界面,点击 Add Component按钮,然后选择component类型。任何可序列化的Component 都可以支持AssetReference变量(例如,游戏脚本、ScriptableObject或其他可序列化的类)。
3、在Component 中添加一个public AssetReference 变量(例如,public AssetReference explosion;)。
4、在Inspector中,选择要链接到对象的 Addressable Asset,方法是将Asset从Project窗口拖到public AssetReference字段,或者从项目中先前定义的Addressable Asset的下拉列表中选择。
注意:与普通Addressable Assets一样,LoadAssetAsync和InstantiateAsync是异步操作。你可以提供一个回调,以便在Assets完成加载时调用它(Async operation handling部分可以获得更多信息)。
1.3构建可寻址内容
在你构建APP之前,Addressables Asset System需要先把配置好的asset内容打包成运行时能用的格式。但这个步骤不是自动的,你可以通过Editor的面板操作或者系统提供的API。
Editor打开Addressables窗口,选择Build > New Build > Default Build Script。
API使用AddressableAssetSettings.BuildPlayerContent()。
构建完的Addressable数据长这样:
1.4提前下载
调用Addressables.DownloadDependenciesAsync()方法会加载传入的地址或标签的依赖项。通常,依赖项是指assetBundle。
此调用返回的AsyncOperationHandle结构包含一个PercentComplete属性,您可以使用该属性监视和显示下载进度。你也可以让应用程序等到内容加载完成。
如果希望在下载前征得用户的同意,请使用Addressables.GetDownloadSize()返回从给定地址或标签下载内容所需的空间。但要注意,这会排查到任何以前下载过的bundles ,因为它们仍然在Unity的assetBundle缓存里。
尽管提前下载应用程序的asset 大多数时候是有利的,但在某些情况下,你也可能选择不这样做。例如:
如果你的应用程序有大量的在线内容,而且你通常希望用户只与其中的一部分进行交互。
你有一个应用程序,必须连接到网上才能发挥作用。如果应用程序的所有内容都是小包,您可以选择根据需要下载内容。
1.5多平台构建
Addressable Asset System在构建应用程序内容时生成包含可Addressable Asset的AssetBundles。AssetBundles依赖于平台,因此必须为你想要支持的每个独特平台重新构建。
默认情况下,在构建Addressables应用程序数据时,给定平台的数据存储在Addressable构建路径的特定平台子目录中。运行时路径对这些平台文件夹进行了说明,并指向适用的应用程序数据。
注意:如果在Editor Play模式中使用Addressables BuildScriptPackedPlayMode脚本,Addressable将尝试加载当前激活的构建目标的数据。因此,如果当前构建目标数据与当前编辑器平台不兼容,就可能会出现问题。