【Unity】Addressables资源管理笔记

2023-11-02 02:36

本文主要是介绍【Unity】Addressables资源管理笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【Unity】Addressables资源管理笔记

Addressables是一种用于管理资源的系统。允许以一种灵活的方式加载、卸载和管理资源,无论是场景、预制件、材质、纹理、音频剪辑等。

一、快速实现

  1. 安装Addressables插件

  2. 把对象添加到组

    1)打开AddressablesGroups面板

    window→AssetManagement→Addressables→Grounps

    2)建立环境预制体到组

    打包预制体后直接拖拽到默认的组(Default Local Group)下

    这里可以看见预制体自动添加了一个寻址路径,拿到这个路径就可以动态加载该资源

  3. 加载对象

    简单的资源加载

        void Update(){if (Input.GetKeyDown(KeyCode.C)){AddAsset();}}void AddAsset(){Addressables.LoadAssetAsync<GameObject>("Assets/Prefab/Environment_Prefab.prefab").Completed +=(asyncOperationHandle) =>{if (asyncOperationHandle.Status == AsyncOperationStatus.Succeeded){Instantiate(asyncOperationHandle.Result);}else{Debug.Log("加载失败");}};}
    

二、加载方法

  1. 根据路径加载

     void AddAsset(){asyncOperationHandle = Addressables.LoadAssetAsync<GameObject>("Assets/Prefab/Environment_Prefab.prefab");asyncOperationHandle.Completed += AsyncOperationHandle_Completed;}void AsyncOperationHandle_Completed(AsyncOperationHandle<GameObject> asyncOperationHandle){if (asyncOperationHandle.Status == AsyncOperationStatus.Succeeded){Instantiate(asyncOperationHandle.Result);}else{Debug.Log("加载失败");}}
    
  2. 根据标签加载

        [SerializeField] AssetLabelReference labelReference;void AddAssetForAssetLabelReference(){Addressables.LoadAssetAsync<GameObject>(labelReference).Completed +=(asyncOperationHandle) =>{if (asyncOperationHandle.Status == AsyncOperationStatus.Succeeded){Instantiate(asyncOperationHandle.Result);}else{Debug.Log("加载失败");}};}
    
  3. 指定预制体加载

     [SerializeField] AssetReference assetReference;void AddAssetForAssetReference(){assetReference.LoadAssetAsync<GameObject>().Completed+=(asyncOperationHandle) =>{if (asyncOperationHandle.Status == AsyncOperationStatus.Succeeded){game= asyncOperationHandle.Result;Instantiate(game);}else{Debug.Log("加载失败");}};}
    
  4. 加载多个资源

        void AddAssetForAssetLabelReferences(){Addressables.LoadAssetsAsync<GameObject>(labelReference, (addAesst) => { Instantiate(addAesst); }).Completed +=(asyncOperationHandle) =>{if (asyncOperationHandle.Status == AsyncOperationStatus.Succeeded){Debug.Log("加载成功");}else{Debug.Log("加载失败");}};}
    
  5. 加载创建与卸载

       
    GameObject game;void AddAssetForAssetInstantiateAsync(){assetReference.InstantiateAsync().Completed += (asyncOperation) => game = asyncOperation.Result;}void ClearInstantiateAsset(){//该方法只适用于InstantiateAsync创建的资源assetReference.ReleaseInstance(game);GC.Collect();}
    
  6. 远程加载

    1)开启远程

    window→AssetManagement→Addressables→Setting

    勾选BuildRemoteCatalog

    Build&Load Paths 选择Remote

选择资源组Addressables Asset Grounp

Build&Load Paths 选择Remote

2)修改配置文件

window→AssetManagement→Addressables→Profiles

Remote.BuildPath是创建路径

Remote.LoadPath是远程地址

[BuildTarget]是发布是类型文件夹,比如webgl和StandaloneWindows64

这里可以创建多个配置文件

3)发布

发布后可以在对应的文件夹下找到资源文件

网发布文件的时候,需要将整个文件夹一起拷贝到地址下

这里可以从配置文件中看到

配置文件地址通常在StreamingAssets→aa下

包括:settings.json和catalog.json

最后建议还是使用AssetBundle,自己写配置和依赖

这篇关于【Unity】Addressables资源管理笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/327503

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Java资源管理和引用体系的使用详解

《Java资源管理和引用体系的使用详解》:本文主要介绍Java资源管理和引用体系的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Java的引用体系1、强引用 (Strong Reference)2、软引用 (Soft Reference)3、弱引用 (W

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个