【Unity3D】Addressables使用流程
Package Manager - 搜索 Addressables 安装
Window -> Asset Management -> Addressables 打开窗口
New -> 新建Packed Assets 资源组
默认资源组Default xxx (Default)
将资源,如预制体直接拖拽进资源组
Build -> New Build -> Default Build Script 打包资源组
注意:打包资源位置都是在工程Assets目录外面的,不是在工程内的...
打包后的资源在
Addressables Groups面板 : Tools -> Window -> Profiles 打开 Addressable Profiles窗口 (调整本地路径)
具体默认在 工程目录\Library\com.unity.addressables\aa\WebGL [WebGL是项目平台名,根据不同平台有不同目录,例如Andorid , Window64
远程打包:
Addressables Groups面板:调整Play Mode Script 使用第三个 Use Existing Build (WebGL) 默认是第一个使用项目内的资源,一般测试用第二个用本地的资源组模拟加载(必须做这一步 否则测试加载时会用本地的,即使资源组全都被删了 也能加载)
Addressables Groups面板 : Tools -> Inspect System Settings 面板
勾选Build Remote Catalog , Build & Load Paths 改为Remote (必须设置后才去Build 远程包,否则无法正常热更包)
Update a Previous Build 的 Content State Build Path 改为 Remote.LoadPath 即指定到远程目录 http://localhost:6800/ServerData/WebGL
远程目录:http://ip:port/ServerData/[BuildTarget] 其中BuildTarget会自动随Unity工程环境决定
【注意:如果是本地服务器,必须使用http://localhost:6800 而不是http://192.168.x.x:6800 因为192.168.x.x明文ip无法识别的】
双击需要远程打包的资源组,在Inspector面板 修改其文件属性 :Build&Load Paths 从Local 改为 Remote 远程打包
再重新Build,其打包出的资源位于:工程目录\ServerData\WebGL [WebGL是项目平台名,同里其他平台有不同目录名]
使用HFS创建本地服务器 localhost:6800
如果发现仍然加载不到,看提示的报错加载路径url 可能是端口不同
Tools -> Window -> Profiles 打开 Addressable Profiles窗口 (调整远端路径) 【调整路径后必须重新打包 否则会找不到】
Remote -> 改为Custom自定义路径
Remote.LocalPath 改为 http://ip:port/[BuildTarget] 例如:http:localhost:6800/[BuildTarget] (不过我的默认就是对的)
[BuildTarget]例如WebGL 或 StandaloneWindows64 必须指定到目录,否则会找不到remote包而加载失败
默认是:http://[PrivateIpAddress]:[HostingServicePort]
真实项目情况还要改为正常的服务器ip:port
{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]
热更包流程:
将需要修改的远程包资源修改之后, 打开Addressables Groups面板 : Build -> Update a Previous Build(更新上一个包)
旧版需要选择一下你要更新的包,如:Assets/AddressableAssetsData/WebGL(BuildPlatformName)/addressables_content_state.bin
新版不需要选择更新包,会自动更新所有这次要更新的包。
Addressable API
1. Addressables.InstantiateAsync 异步实例化物体(是实体 不是预制体)
使用async await简化代码 获取物体
async void Load()
{
//加载之前的逻辑正常执行完
GameObject go = await Addressables.InstantiateAsync("xxx", pos, rotate).Task; //类似协程yield return 等待这个任务完成
//加载出go之后进行后续逻辑
}
2. Addressables.ReleaseInstance 释放实例化物体(是实体 不是预制体)
3. Addressables.LoadAssetAsync (异步加载资源 贴图 图集 等等) //同上也可以使用async await
4. Addressables.Release (卸载资源)
Packed Assets 文件内容:
Content Update Restriction
决定了资源是全量更新还是增量更新。
Can Change Post Release 后续更新资源的话全量更新(直接替换旧资源)【默认】
Cannot Change Post Release 后续更新资源的话增量更新(不改变旧资源包,使用新资源包加载改变的内容)【增量更新,需要每次更新前(Update a Previous Build之前)进行Tools->Check Update文件,弹出的窗口有变化就点击Apply 再去进行Update a Previous Build】
由于Unity不支持Task多线程加载资源,改用 UniTask 2.1.0 版本可适用GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity.
UniTask基本用法:
async void Load(){
GameObject go = await Addressables.InstantiateAsync(name, Random.insideUnitSphere * 3, Quaternion.identity).ToUniTask();
Material mat = await Addressables.LoadAssetAsync<Material>("ArrowMat").ToUniTask();
}
其他还有收集List<UnitTask<T>> list 再进行 await UniTask.WhenAll(list) 或 WhenAny(list)(一般是WhenAll等全部加载完毕 再进行后续流程)详细的可以百度
坑点:
WebGL环境下,Addressables 使用 InstantiateAsync加载出的物体,材质的shader会丢失,编辑器下启用Use Existing Build 会丢失,其他2个模式不会。
解决思路:在物体上挂载一个脚本,获取物体的材质球重新捆绑shader
例如:material.shader = Shader.Find(material.shader.name);
WebGL打包后,会丢失shader,需要将shader放于常驻shader列表内,即Project Settings -> Graphics -> Always Included Shaders 拖拽你丢失的shader。(注意不要拖拽Standary,会导致包体过大,打包速度变慢,一般情况下都不要使用这个着色器,即使使用也要是阉割版的 将不必要的东西删掉 减少变体)
相关文章:
【Unity3D】Addressables使用流程
Package Manager - 搜索 Addressables 安装 Window -> Asset Management -> Addressables 打开窗口 New -> 新建Packed Assets 资源组 默认资源组Default xxx (Default) 将资源,如预制体直接拖拽进资源组 Build -> New Build -> Default Buil…...
在Oracle Linux 7上安装Oracle 11gr2数据库
好久没有安装Oracle 11g了,虽然是老版本,但是还是有很多公司在用,自从有了oracle linux感觉安装变简单了。 1.安装先决条件包,此包会配置系统参数,建立oracle用户等: yum install oracle-rdbms-server-11gR2-preinstall 安装完这个oracle自…...
python爬虫概述
0x00 python爬虫概述 以豆瓣的选电影模块为例,当查看源代码搜索猫猫的奇幻漂流瓶是搜不到的 这时服务器的工作方式应该是这样的 客户端浏览器第一次访问其实服务器端是返回的一个框架(html代码) 当客户端浏览器第二次通过脚本等方式进行访问时服务器端才返回的数据…...
Umi从零搭建Ant Design Pro项目(2)
文章目录 前言一、新增登录页面1.登录页面代码2.登录处理3.修改app.tsx 二、说一下逻辑1. 流程图2. 注意点 总结 前言 前面写了创建项目及修改一些配置。这一章写写登录页面。 一、新增登录页面 新增登录页面,会涉及Umi的目录结构。先看一下文档再动手。 1.登录页…...
nginx 配置ip黑白名单
配置ip白名单 nginx.conf内容,以server模块的配置为例。其中,allow和deny可以在http,server,location中配置。 server {listen 80;server_name localhost;# 白名单配置allow 192.168.3.7; # 允许单个IPallow 192.168.3.9…...
【C++】STL库面试常问点
STL库 什么是STL库 C标准模板库(Standard Template Libiary)基于泛型编程(模板),实现常见的数据结构和算法,提升代码的复用性和效率。 STL库有哪些组件 STL库由以下组件构成: ● 容器…...
Qt 控件概述 QWdiget 1.1
目录 qrc机制 qrc使用 1.在项目中创建一个 qrc 文件 2.将图片导入到qrc文件中 windowOpacity: cursor 光标 cursor类型 自定义Cursor font tooltip focusPolicy styleSheet qrc机制 之前提到使用相对路径的方法来存放资源,还有一种更好的方式…...
python 数据可视化matplotib库安装与使用
要使用 matplotlib 库进行数据可视化,首先你需要确保已经安装了该库。如果你还没有安装,可以通过 Python 的包管理器 pip 来安装它。在你的命令行工具中运行以下命令来安装 matplotlib: pip install matplotlib安装完成后,你就可以…...
C# Exe + Web 自动化 (BitComet 绿灯 自动化配置、设置)
BitComet GreenLight,内网黄灯转绿灯 (HighID), 增加p2p连接率提速下载-CSDN博客 前两天写个这个,每次开机关机后要重来一遍很麻烦的索性写个自动化。 先还是按照上面的教程自己制作一遍,留下Luck 以及 路由器相关的 端口记录信息。 (因为自…...
1-1 MATLAB深度极限学习机
本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏目录,查看更多内容。 参考[1]魏洁.深度极限学习机的研究与应用[D].太原理工大学[2023-10-14].DOI:CNKI:CDMD:2.1016.714596. 目录 0.引言 1.ELM-AE实现 2.DE…...
MyBatis源码分析のSql执行流程
文章目录 前言一、准备工作1.1、newExecutor 二、执行Sql2.1、getMappedStatement2.2、query 三、Cache装饰器的执行时机四、补充总结 前言 本篇主要介绍MyBatis解析配置文件完成后,执行sql的相关逻辑: public class Main {public static void main(Str…...
Java 大视界 -- Java 大数据中的知识图谱可视化与交互分析技术(141)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
万字长文详解|蚂蚁数据湖深度探索与业务应用实践
作者介绍:黄超傑,蚂蚁数据智能部实时数据团队数据研发工程师,致力于数据湖技术在蚂蚁落地应用、蚂蚁广告实时数仓建设、蚂蚁数据成本治理等工作。 在开始之前 如果: 你想要提升数据时效,能够接受分钟级延迟你好奇准实…...
网络空间安全(36)数据库权限提升获取webshell思路总结
一、获取数据库访问权限 寻找漏洞: SQL注入:这是最常见的方法之一。攻击者通过SQL注入漏洞,可以在数据库执行任意SQL语句,从而获取数据库中的数据,甚至可能获取数据库的访问权限。配置文件泄露:有时&#x…...
前端面经分享(25/03/19)
北京一家做协同办公软件出海的公司,技术一面,20k-40k,要求3-5年 详细聊了一下上家公司的项目上家公司的项目是不做了吗,离职原因是什么,你觉得公司的这个产品怎么样在做AI类的业务时,作为前端感觉跟常规业务…...
火山引擎(豆包大模型)(抖音平台)之火山方舟的Prompt的使用测试
前言 在大模型的使用过程当中,Prompt的使用非常的关键。原来,我对Prompt的理解不深,觉得Prompt的产生并不是很有必要。但是,自从使用了火山方舟中的“Prompt优解”之后,感受加深了,觉得Prompt是我们和大模型…...
AI助力临床诊疗:AI工具帮助确认病情
在临床诊疗中,准确确认病情是治疗成功的关键。然而,传统的诊疗方法往往依赖医生的经验和有限的检查手段,容易出现误诊或漏诊的情况。随着人工智能(AI)技术的飞速发展,AI工具在临床诊疗中的应用逐渐崭露头角…...
【平台优化】大数据集群一个客户端参数引起的任务性能差的问题
大数据集群一个客户端参数引起的任务性能差的问题 背景介绍排查过程任务慢的具体原因Executor中数据内存往磁盘溢写结果数据写入分区路径 分析解决方案 结语&思考 背景介绍 随着业务量不断扩大,平台逐步发展成HDFS多联邦的架构,这个过程中ÿ…...
【OCR】总结github上开源 OCR 工具:让文字识别更简单
前言 在数字化的时代,光学字符识别(OCR)技术成为了我们处理文档、图像文字信息的得力助手。它能够将图像中的文字信息转换为可编辑和可处理的文本数据,极大地提高了信息处理的效率。今天,我要给大家介绍一些优秀的开源…...
为wordpress核心functions文件瘦身
在wordpress主题开发过程中,常会用到functions.php这个文件,通过这个文件,可以让wordpress主题变得很强大。但是随着,功能的越来越多functions文件也会变得越来越臃肿庞大。要修改起functions文件来,也就越麻烦。特别是…...
Jmeter使用之http请求默认值
一、添加【HTTP请求默认值】 1、添加方式 【线程组】---->右击【添加】---->【配置元件】---->【HTTP请求默认值】 2、作用 在发送http请求的时候,自带默认值设置的参数(常用:【协议】、【服务器名称或IP】、端口号、内容编码&…...
【QT】】qcustomplot的初步使用二
功能预期: 在简单显示曲线()基础上加功能: 1.在曲线区域里,X轴可以随鼠标滚轮变化将图像缩放、随鼠标左键进行曲线移动; 2.在曲线区域里,Y轴的量程可以随Y轴数据大小自适应; 3.可以…...
让 Google Play 成为助力 PC 游戏增长的最佳平台
作者 / Google Play 游戏副总裁兼总经理 Aurash Mahbod 我们正在加强多平台游戏产品,并将在今年的游戏开发者大会 (GDC) 上发布激动人心的消息。我们将为用户带来更多游戏,提供更多跨设备畅玩游戏的方式,并进一步优化游戏体验。在游戏开发者大…...
脚本一键式启动Nginx、Mysql、Redis
此脚本包含拉取镜像、数据卷挂载、容器启动三大部分,可一键式安装三大环境 新建一个depoy.sh文件在服务器上,然后复制以下内容。 给脚本文件添加执行权限 chmod x depoy.sh # 文件的当前目录下 如果需要修改数据库MYSQL密码和Reids密码 MYSQL_ROO…...
路径问题(greedy):地下城游戏
题目描述: 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健…...
LS-NET-008-OSPF、BGP、RIP三大路由协议
LS-NET-008-OSPF、BGP、RIP三大路由协议 从网络层级、协议特性和厂商实现三个维度对比OSPF、BGP、RIP三大路由协议: 一、网络协议分层架构对比 graph TD L7[应用层] --> BGP(TCP/179) L7 --> RIP(UDP/520) L4[网络层] --> OSPF(IP协议号89) L4 -->|报…...
electron框架(3.0)主程序与桥梁与渲染,以及之间的通信
每个页面程序通过渲染和主进程通信,主进程根据需求调用Native Api来实现功能。 实际,每个页面和主程序通信时,需要建个桥梁来管理它们的通信,preload.js(自己创建),来管理实现通信。 ----创建preload.js定义桥梁js&a…...
python写入excel多个sheet表 以及追加sheet表
python写入excel多个sheet表 以及追加sheet表 写入多个sheet表在excel追加sheet表 可将不同DataFrame分别写入指定Sheet(如初始写入"箱_4"和"箱_2"),并通过封装函数append_to_excel支持动态追加新Sheet到现有文件&#x…...
【大模型微调】使用Llama Factory实现中文llama3微调
【大模型微调】使用Llama Factory实现中文llama3微调 github链接 为什么不用基座模型:95%用的英文数据训练,训练效果不好 所以用的Llama3-99-Chinese-Chat(别人微调过的再微调)...
群体智能优化算法-牛顿-拉夫逊优化算法(Newton-Raphson-Based Optimizer, NRBO,含Matlab源代码)
摘要(Abstract) 牛顿-拉夫逊优化算法(Newton-Raphson-Based Optimizer, NRBO)是一种新型群体智能优化算法,受牛顿-拉夫逊方法求解非线性方程的启发。NRBO 结合牛顿-拉夫逊搜索规则(Newton-Raphson Search …...
