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.mzph.cn/diannao/60648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL之索引(2)(B树、B+树、索引分类、聚集索引、二级索引、回表查询)

目录 一、B树结构索引&#xff08;B-树&#xff09; &#xff08;1&#xff09;特点。 &#xff08;2&#xff09;问题&#xff1a;范围查询效率&#xff1f;&#xff1f; &#xff08;3&#xff09;缺点。 1、查询的不稳定性。 2、各叶子节点无联系。 3、IO资源的消耗较多。 二…

翼鸥教育:从OceanBase V3.1.4 到 V4.2.1,8套核心集群升级实践

引言&#xff1a;自2021年起&#xff0c;翼鸥教育便开始应用OceanBase社区版&#xff0c;两年间&#xff0c;先后部署了总计12套生产集群&#xff0c;其中核心集群占比超过四分之三&#xff0c;所承载的数据量已突破30TB。自2022年10月&#xff0c;OceanBase 社区发布了4.2.x 版…

ubuntu使用DeepSpeech进行语音识别(包含交叉编译)

文章目录 前言一、DeepSpeech编译二、DeepSpeech使用示例三、核心代码分析1.创建模型核心代码2.识别过程核心代码 四、交叉编译1.交叉编译2.使用 总结 前言 由于工作需要语音识别的功能&#xff0c;环境是在linux arm版上&#xff0c;所以想先在ubuntu上跑起来看一看&#xff…

Go语言入门教案

文章目录 一、教学目标二、教学重难点&#xff08;一&#xff09;重点&#xff08;二&#xff09;难点 三、教学方法四、教学过程&#xff08;一&#xff09;Go语言简介&#xff08;二&#xff09;环境搭建1. 下载和安装Go语言开发环境2. 配置Go语言环境变量3. 命令行查看Go语言…

普通人如何做好AI数字人直播带货月入10W?

在科技飞速发展的今天&#xff0c;AI数字人直播正以惊人的速度崛起&#xff0c;为直播领域带来了一场前所未有的变革。那到底AI数字人直播前景怎么样&#xff0c;是怎样一个形式&#xff0c;普通人能够利用Ai数字人直播赚取到收益吗&#xff1f; 首先讲到AI数字人直播很多人想的…

飞牛私有云访问外网

飞牛私有云 fnOS NAS 是一款有着卓越的性能以及强大的兼容性和智能化的管理界面&#xff0c;它之所以能在 NAS 市场中脱颖而出&#xff0c;是因为 fnOS 基于最新的 Linux 内核&#xff08;Debian发行版&#xff09;深度开发&#xff0c;不仅兼容主流 x86 硬件&#xff0c;还支持…

论文 | The Capacity for Moral Self-Correction in LargeLanguage Models

概述 论文探讨了大规模语言模型是否具备“道德自我校正”的能力&#xff0c;即在收到相应指令时避免产生有害或偏见输出的能力。研究发现&#xff0c;当模型参数达到一定规模&#xff08;至少22B参数&#xff09;并经过人类反馈强化学习&#xff08;RLHF&#xff09;训练后&…

计算机毕业设计Python+大模型农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

一文窥见神经网络

一文窥见神经网络 1.初识神经元1.1 生物神经元1.2 人工神经元1.3 权重的作用1.4 偏置的作用1.5 激活函数的作用1.5.1 线性激活函数1.5.2 非线性激活函数 2. 神经元模型2.1 多输入单神经元模型2.2 一层神经元模型2.3 神经网络&#xff08;多层神经元&#xff09;模型 3. 神经网络…

【视觉SLAM】2-三维空间刚体运动的数学表示

读书笔记&#xff1a;学习空间变换的三种数学表达形式。 文章目录 1. 旋转矩阵1.1 向量运算1.2 坐标系空间变换1.3 变换矩阵与齐次坐标 2. 旋转向量和欧拉角2.1 旋转向量2.2 欧拉角 3. 四元数 1. 旋转矩阵 1.1 向量运算 对于三维空间中的两个向量 a , b ∈ R 3 a,b \in \R^3 …

shell 100例

1、每天写一个文件 (题目要求&#xff09; 请按照这样的日期格式(xxxx-xx-xx每日生成一个文件 例如生成的文件为2017-12-20.log&#xff0c;并且把磁盘的使用情况写到到这个文件中不用考虑cron&#xff0c;仅仅写脚本即可 [核心要点] date命令用法 df命令 知识补充&#xff1…

[Python学习日记-66] 多态与多态性

[Python学习日记-66] 多态与多态性 简介 多态 多态性 鸭子类型 简介 多态与多态性都是面向对象的特征之一&#xff0c;它们都是面向对象编程的一个重要概念&#xff0c;在 Python 当中也有一些独特的见解和用法&#xff0c;下面我们一起来了解一下是怎么回事吧。 多态 多态…

Linux基础1

Linux基础1 Linux基础1学习笔记 ‍ 声明&#xff01; ​​​学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他…

GESP4级考试语法知识(贪心算法(二))

排队接水2代码&#xff1a; #include<iostream> #include<cstdio> #include<algorithm> using namespace std; struct people {int num;int time; }; people s[1001]; int n,r,a[1001]; double sum,ave; bool cmp(people x,people y) {return x.time<y.t…

MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?

文章目录 MySQL45讲 第二十讲 幻读是什么&#xff0c;幻读有什么问题&#xff1f;一、幻读的定义二、幻读带来的问题&#xff08;一&#xff09;语义问题&#xff08;二&#xff09;数据一致性问题 三、InnoDB 解决幻读的方法四、总结 MySQL45讲 第二十讲 幻读是什么&#xff0…

【再谈设计模式】建造者模式~对象构建的指挥家

一、引言 在软件开发的世界里&#xff0c;创建对象是一项基本且频繁的操作。然而&#xff0c;当对象的构造变得复杂&#xff0c;涉及众多属性和初始化步骤时&#xff0c;传统的构造函数方式往往会让代码陷入混乱的泥沼。就如同搭建一座复杂的建筑&#xff0c;若没有合理的规划和…

三、模板与配置(下)

三、模板与配置 8、WXSS模板样式-全局样式和局部样式 类型说明适用情景注意点全局样式定义在 app.wxss 中的样式&#xff0c;作用于每一个页面。当有一些通用的样式规则需要应用于整个小程序时&#xff0c;比如全局的字体大小、颜色、布局等。全局样式可能会被局部样式覆盖&a…

SQL面试题——抖音SQL面试题 主播播出时长

主播播出时长 现有如下数据,主播id、房间号、播出的批次号,每个批次号进出房间的时间戳、分区时间: 每一次直播都有一个上播和下播,每个房间里,同一个批次号会有两条数据,分别记录了上播和下播时间,求每个主播的播出时长? 通过上面的数据,可以清晰的看出,同一个批次…

大语言模型LLM综述

一、LM主要发展阶段 1.1、统计语言模型SLM 基于统计学习方法&#xff0c;基本思想是基于马尔可夫假设HMM建立词概率预测模型。如n-gram语言模型 1.2、神经语言模型NLM 基于神经网络来做词的分布式表示。如word2vec模型 1.3、 预训练语言模型PLM 预训练一个网络模型来做词表…

用 Python 从零开始创建神经网络(七):梯度下降(Gradient Descent)/导数(Derivatives)

梯度下降&#xff08;Gradient Descent&#xff09;/导数&#xff08;Derivatives&#xff09; 引言1. 参数对输出的影响2. 斜率&#xff08;The Slope&#xff09;3. 数值导数&#xff08;The Numerical Derivative&#xff09;4. 解析导数&#xff08;The Analytical Derivat…