[Unity Addressables] Addressables(可寻址资产系统)打包说明

之前大家使用热更的时候都使用的是unity3d自带的assetbundle(AB)包,但是说实话对于使用来说还是存在着非常大的问题的

  1. 打包需要通过写代码
  2. 依赖关系,比较麻烦

现在有一个特别好的东西可以解决unity之前AB包的一个问题,那就是我们今天介绍的Addressables
此博文主要是对AA的已解介绍,如果需要热更方案的,可以移步到[Unity 热更方案] 使用Addressable进行打包管理, 使用AssetBundle进行包的加载管理.进行沟通

资源引入

此处我们引入两个资源,第一个Addressables另一个为Asset Bundle Browser

Addressables

Unity Registry 的里面找到Addressables下载并引入

Asset Bundle Browser

此工具为辅助使用,属于可选项,不一定非要安装,按照下方官方说明进行引入.

git链接
在这里插入图片描述

设置说明

路径说明

打开AddressAbleds Profiles页面,其中存在三个元素,Profile,Variable,Build and Load Variables.
在这里插入图片描述
一般情况我们没必要创建Profile使用默认的即可
对于Variable来说也没什么必要,我们比较关注的是Build and Load Variables,因为它决定了打包和加载的路径.

下图为一个打开window的方法.
在这里插入图片描述

设置运行模式或者说加载方式

下图为运行模式设置页面
在这里插入图片描述
第一个为直接使用资源,没有外部加载的过程
第二个是模拟外部加载,但是实际上还是走的内部资源
第三个为外部加载,此处有个比较严重的问题,如果你打包的平台和本平台不统一,可能会导致shader失效导致的模型变红的问题.

打包我们标记好的资源

在这里插入图片描述

加载这个资源

	using UnityEngine;
	using UnityEngine.AddressableAssets;
	
	public class samplesuse : MonoBehaviour
	{
	    // Start is called before the first frame update
	    void Start()
	    {
	        LoadAE();
	    }
	
	    public void LoadAE()
	    {
	        Addressables.LoadAssetAsync<GameObject>("Assets/Cube.prefab").Completed += LoadCubeCompleted;
	    }
	
	    private void LoadCubeCompleted(UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle<GameObject> obj)
	    {
	        Addressables.InstantiateAsync("Assets/Cube.prefab");
	        Instantiate(obj.Result);
	    }
	}

四个样本(我自己写的内容居然忘记是干什么的了)

Addressables Utility

加载引用资源

Disable AssetImport on Build

build不允许使用引入资源

Import Groups Tool

引入资源
在这里插入图片描述

Prefab Spawner

预制体孵化器,可以直接孵化addressable的预制体,并且可以调整生成时间,存活时间,等参数.

热更例子

是否可以跨项目加载

可以加载gameobject,但是脚本无法加载

在这里插入图片描述

代码

using UnityEngine;
using UnityEngine.AddressableAssets;

public class loadotherae : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        string url = @"E:\WorkStations\Unity\addressenble\Library\com.unity.addressables\aa\Windows\catalog.json";
        Addressables.LoadContentCatalogAsync(url).Completed += (arg) =>
        {
            Addressables.LoadAssetAsync<GameObject>("Assets/Cube.prefab").Completed += LoadCubeCompleted;
        };
    }

    private void LoadCubeCompleted(UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle<GameObject> obj)
    {
        Addressables.InstantiateAsync("Assets/Cube.prefab");
        Instantiate(obj.Result);
    }
}

https://docs.unity.cn/Packages/com.unity.addressables@1.18/manual/MultiProject.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢斯

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值