Unity资源打包Addressable AA包

从零到一

很多资料都是通过一步步设置讲解的,有时很想先快速实现,再了解细节。

下面就是远程加载Cube.prefab然后实例化简单的代码。

代码中可以不需要远程的网址,不需要资源下载的位置,不需要判断是否已经下载到本地。

那是如何从远程服务器下载资源,又是怎么加载的。

using UnityEngine;
using UnityEngine.AddressableAssets;
public class Load : MonoBehaviour
{private GameObject cubeObj;private UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle<GameObject> handle;void Start(){// 加载资源handle = Addressables.LoadAssetAsync<GameObject>("Assets/Prefab/Cube.prefab");handle.Completed += (obj) =>{// 实例化cubeObj = Instantiate(obj.Result,transform);};}// 释放资源public void Release_Resource(){if (null != cubeObj)Destroy(cubeObj);Addressables.Release(handle);}
}

Addressable工具是一个插件包

Unity 2023.1.0f1c1版本中导入插件包

Windows > Package Manager > Packages:Unity Registry > 搜索 Addressable > Install

Addressable工具包需要初始化

Window > Asset Management > Addressables > Groups > Create Addressables Settings

Addressable初始化创建了一个文件夹

文件夹中包含配置文件,资源的管理配置都在这里,所以代码加载数据时,代码量很少

创建一个Cube Prefab用于加载测试

场景中创建一个Cube拖入到Assets > Prefab文件夹中(文件夹名称随意但是要和代码中的路径一致)

挂载脚本

删除场景中的Cube创建一个空物体用于挂在上面的脚本,脚本中加载Cube后实例化的位置是挂载脚本的GameObject的位置,所以把空物体放在相机正前方。

需要注意的是Addressables.LoadAssetAsync<GameObject>("Assets/Prefab/Cube.prefab");中的路径一定是刚刚Cube Prefab存放的路径

万事俱备只欠东风

如何配置Addressable工具

本地加载

1.预制体分组

当资源多的时候需要将资源分成一组一组,Addressable中的Group

选择Cube的Prefab,在属性面板中勾选Addressable (还有一种拖拽的方式)

此刻Prefab有两个信息

        1.资源的路径是Assets/Prefab/Cube.prefab(代码中加载的路径)

        2.资源被分到默认组 Default Local Group (以后再说怎么分组)

2.Addressable工具打包

还记得Addressable的配置文件吗

Assets > AddressableAssetsData > AddressableAssetSettings

点击Manage Groups打开管理面板

Build > New Build > Default Build Script

3.运行

此时已经可以加载Cube了

4.疑惑及解决疑惑

程序是运行了,预制体也加载了,可是预制体的资源文件在哪里?

预制体在Addressable工具build的时候会存放在下面路径下

F:\UnityProject\AA\Library\com.unity.addressables\aa\Windows\StandaloneWindows64

打包成windows程序后

会保存在StreamingAssets文件夹中

F:\UnityProject\AA\win\AA_Data\StreamingAssets\aa\StandaloneWindows64

远程加载

先预想一下远程加载的步骤

1.资源打包

2.将打包好的资源存放在远程服务器上

3.程序运行在远程服务器上下载资源,加载资源

4.程序再次运行,先对比远程资源

        如果一样,直接加载本地资源

        如果不一样,在远程服务器上下载资源,加载资源

1.资源打包

在上面加载的代码中没有发现有添加远程服务器的代码,是因为远程服务器的代码在资源打包的时候就已经配置好了。

这里有一个小插曲,就是如何模拟一个远程服务器。(Unity也可以模拟但这里用另一个方法)

搜索HFS.exe这个工具,将打算存放资源的文件夹拖到根节点上即可,可以自定义端口。

通过网址你可以检验一下资源服务器是否生效

1.配置资源打包的本地地址和远程地址

配置文件AddressableAssetSttings > Manage Profiles

Remote 远程 选择 Custom 自定义

Remote.BuildPath ServerData/[BuildTarget]  (资源打包到本地的位置)

Remote.LoadPath http://172.18.216.168:6565/HFS/  (将来程序加载资源的网址)

2.选择以远程打包模式

Build Remote Catalog

3.选择哪些分组要打包成远程资源

刚刚Cube Prefab放在Default分组下,将Default分组设置成远程打包的模式

4.打包资源

注意:自己模拟的文件服务器需要做如下设置

Project Setting > Player > Allow downloads over HTTP* 选择 Always Allowed

5.打包程序运行

将程序打包,运行程序,此时发现场景中什么都没有

因为还需要一个步骤

将F:\UnityProject\AA\ServerData\StandaloneWindows64中的内容复制到模拟远程服务器的文件夹中F:\language\HFS

再次运行程序,Cube被加载出来了

6.加载的资源在哪里

程序运行后我们发现StreamingAssets文件夹中没有资源,那资源被下载到哪里?

我们可以查看一下F:\UnityProject\AA\win\AA_Data\StreamingAssets\aa中catalog.json

这个配置文件中指定了远程服务器下载路径,及资源的名称

通过收搜索资源名称可以发现,资源被缓存到系统路径中去了。

这个资源也可以指定到程序路径下,远程文件服务器的地址应该也可以通过代码进行修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/12471.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Microsoft Visual C++ 安装失败 0x80070666

“0x80070666”错误通常在尝试安装 Microsoft Visual C、Lumberyard 或类似的分发包时发生。该错误信息通常在安装过程的开始阶段就被报告。此问题并非特定于某一Windows版本&#xff0c;已经确认在Windows 7、Windows 8.1和Windows 10中均会发生。 0x80070666 错误在安装 Micr…

netcat工具安装和使用

netcat是一个功能强大的网络实用工具&#xff0c;可以从命令⾏跨⽹络读取和写⼊数据。 netcat是为Nmap项⽬编写的&#xff0c;是⽬前分散的Netcat版本系列的经典。 它旨在成为可靠的后端⼯具&#xff0c;可⽴即为其他应⽤程序和⽤户提供⽹络连接。 一&#xff0c;下载安装 1&a…

带隙基准学习笔记一

1.带隙基准原理&#xff1a; 带隙基准电压源采用BJT&#xff0c;利用其基极-发射极电压的负温度系数和两个不同的BJT基极-发射极电压之差的正温度系数用于获得温度系数为零的基准电压源&#xff0c;因为最终计算的输出电压接近硅晶体的一个带隙电压&#xff0c;所以被称为带隙…

使用 Node.js 了解 MVC 模式

模型-视图-控制器 &#xff08;MVC&#xff09; 模式是 Web 开发中最流行的架构模式之一。通过将应用程序划分为三个相互关联的组件&#xff08;模型、视图和控制器&#xff09;&#xff0c;MVC 促进了有组织、可维护和可扩展的代码。Node.js 具有异步处理和庞大的生态系统&…

35.3K+ Star!PhotoPrism:一款基于AI的开源照片管理工具

PhotoPrism 简介 PhotoPrism[1] 是一个为去中心化网络设计的AI照片应用,它利用最新技术自动标记和查找图片,实现自动图像分类与本地化部署,你可以在家中、私有服务器或云端运行它。 项目特点 主要特点 浏览所有照片和视频,无需担心RAW转换、重复项或视频格式。 使用强大的…

VMware虚拟机安装Win7专业版保姆级教程(附镜像包)

一、Win7镜像下载: 链接&#xff1a;https://pan.baidu.com/s/1tvN9hXCVngUzpIC6b2OGrA 提取码&#xff1a;a66H 此镜像为Win7专业版(收藏级镜像 已自用几年)&#xff0c;官方纯净系统没有附带任何其他第三方软件。 二、配置虚拟机 1.创建新的虚拟机。 这里我们以最新的VMware…

中国前首富胡志标受邀出席创客匠人“全球创始人IP领袖高峰论坛”

创客匠人正式官宣&#xff01;原爱多VCD创始人、中国前首富胡志标受邀出席创客匠人5000人“全球创始人IP领袖高峰论坛”&#xff0c;将与我们携手共赴这场商业巅峰盛宴。 由创客匠人打造的“全球创始人IP领袖高峰论坛”将在2024年12月26日-28日在厦门市国际博览会议中心如期举…

TCP可靠连接的建立和释放,TCP报文段的格式,UDP简单介绍

TCP连接的建立&#xff08;三次握手&#xff09; 建立连接使用的三报文 SYN 报文仅用于 TCP 三次握手中的第一个和第二个报文&#xff08;SYN 和 SYN-ACK&#xff09;&#xff0c;用于初始化连接的序列号。数据传输阶段不再使用 SYN 标志。 SYN 报文通常只携带连接请求信息&a…

flink 同步oracle11g数据表到pg库

1. 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld systemctl status firewalldvi /etc/selinux/config 修改为disabled2.安装java8 yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version3.下载和部署postgresql 看需求安装pg库…

012_SSH_Mysql网上订餐系统(论文+程序)_lwplus87

摘 要 本文讲述了基于JSP技术构建的网上订餐系统的设计与实现。所谓的网上订餐系统是通过网站推广互联企业的商品和技术服务&#xff0c;并使客户随时可以了解企业和企业的产品&#xff0c;为客户提供在线服务和订单处理功能。 从长期的战略目标来说&#xff0c;网站不仅是…

ASR 点亮闪光灯和后摄对焦马达

ASR翱捷科技 ASR kernel 5.10 android14 ASR EVB平台 ASR 原理图 闪光灯是gpio控制 1.驱动 路径:asr\kernel\linux\drivers\media\platform\asr-mars11\flash\leds-gpio-flash.c 驱动加载后生成设备节点/sys/class/leds/torch 和/sys/class/leds/flash。 Makefile Kconfig…

Linux中线程的基本概念与线程控制

Linux操作系统中线程 1、进程指的是加载进内存的程序&#xff0c;进程 内核数据结构 进程代码和数据 2、进程在执行ABCD四个函数时是一个单执行流&#xff0c;而如果想让AB函数和CD函数并发执行&#xff0c;我们通常会创建一个子进程&#xff0c;但这意味着需要创建新的进程…

初级数据结构——单向链表

前言 单向链表示最基础的数据结构之一&#xff0c;它也是我们学习开始学习数据结构的第一个必须要掌握的数据结构&#xff0c;学习数据结构一定是由浅到深&#xff0c;所以我们最好是先学习简单的在学习有难度的&#xff0c;因为直接学习难的数据结构很容易劝退&#xff0c;让…

RTMP推流H264和AAC

使用 librtmp 库实现推流h264和aac文件&#xff0c;rtmp服务器使用SRS搭建&#xff0c;拉流端使用VLC。其中用到的h264和aac文件解析部分代码在我其它博客中有写&#xff1a;C/C AAC文件解析-CSDN博客、C/C H264文件解析-CSDN博客。 推流部分源码&#xff08;C&#xff09;如下…

中国药品注册审批数据库- 药品注册信息查询与审评进度查询方法

药品的注册、审评审批进度信息是医药研发相关人员每天都会关注的信息&#xff0c;为了保证药品注册申请受理及审评审批进度信息的公开透明&#xff0c;CDE药审中心提供药品不同注册分类序列及药品注册申请受理的审评审批进度信息查询服务。但因CDE官网的改版导致很大一部分人不…

代数插值实验

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的&#xff1a;进一步熟练掌握Lagrange插值算法、Newton插值算法&#xff0c;提高编程能力和解决插值问题的实践技能。 实验报告&#xff1a;根据实验情况和结果撰写并递交实验报告。 实验报告打印和装…

物联网智能技术的深入探讨与案例分析

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

点云配准之点到点,点到面,点到线ICP,NDT算法介绍

点云配准&#xff08;Point Cloud Registration&#xff09;即求一个位姿变换 x [ R , t ] \mathbf{x}[\mathbf{R},\mathbf{t}] x[R,t]&#xff0c;将源点云 Q { q 1 , ⋯ , q m } Q\{\mathbf{q}_{1},\cdots,\mathbf{q}_{m}\} Q{q1​,⋯,qm​}变换到与目标点云 P { p 1 , ⋯…

Html5详解

目录 一、浏览器相关知识 二、html简介 (一)超文本标记语言 (二)HTML基础结构 (三)HTML概念词汇解释 (四)HTML的语法规则 (五)前端开发工具VS Code与插件 1.VS Code的安装 2.安装插件&#xff1a; 3.通过live Server 小型服务器运行项目 4.其他常见设置 5.在线帮…

实现 think/queue 日志分离

当我们使用think/queue包含了比较多的不同队列,日志会写到runtime/log目录下,合并写入的,不好排查问题,我们遇到一个比较严重的就是用了不同用户来执行,权限冲突了,导致部分队列执行不了. 为了解决以上问题,本来希望通过Log::init设置不同日志路径的,但是本地测试没生效,于是用…