Addressables是Unity官方推出的用于资源热更的系统,可在Package Manager里面下载,我这里分两部分讲解,第一部分是操作入门,第二部分是代码编程以及注意事项
一、入门

选择合适的Addressables版本下载安装完成后,选择Groups

点击Create Addressables Settings

它会默认给你创建一个本地的Group,选中这个Group,可以在Inspector面板看到如下图示:

这五个红框是我会经常设置的地方(从上到下):
1.点击之后会跳转到Settings面板,Settings面板等会讲
2.更新形式,一种是Can,一种是Cannot,这两种的更新操作会有些区别,Unity官方是建议将用作增量更新的AB包使用Cannot形式,比如有一些ab包是要放进App的包体里的,这时候我们一般第三个框会选择Local,也就是说这个Group下的资源会被打包成ab包然后在build app的时候,会复制到我们的StreamingAssets文件夹里,这样如果这些ab包里面有资源要更新,那么就可以操作将这些资源导出来放到一个新的Group里来进行热更(至于怎么操作,等会会在更新环节讲)
3.Local or Remote,如果是选择Remote的话,那么你还需要到Addressables Profiles里去设置你的远程资源地址,Remote.BuildPath我们通常不改,一般只改Remote.LoadPath,即使用你自己的资源服务器地址

4.这里我通常会勾上
5.Cache Clear Behavior:这里如果是Local的话我一般用默认第一个,如果是Remote的话,我通常会选择第二个,第二个意思就是如果有资源更新了,加载了新资源的时候就会把本地的旧资源删除掉,自测很好用,避免本地下载的旧资源堆积太多

Bundle Mode:我个人喜欢分开打包,这样的好处就是如果只是一个很小的资源需要热更,那么下载的时候就只需要下载这个小资源,不用下载很多不必要的资源,对用户体验会比较好
接下来是Addressables Settings面板:


这四个红框是我会修改的地方(从上到下):
1.通过设置不同的Profiles,我们可以管理不同资源服务器的下载,比如内网、审核服、外网等等
2.Disable Catalog Update on Startup:这个勾选的话是说这个catalog不要在应用启动的时候就自动更新,等我们到了主界面,点击屏幕再更新,看看是否有更新,这个catalog保存的就是我们的资源信息,一般要做这种需要玩家确认下载的时候我会勾选这个,我也尝试过不勾选然后做无感更新也是可以的,即在App运行过程中有资源更新了,不需要退出再重新打开App或者返回主界面再更新,可以直接后台更新,然后再加载这个资源就是最新的资源了
3.这个我通常会勾选,如果是想加载远程的资源,path选Remote,如果是只想加载local group里的资源(即放在StreamingAssets),没有加载远程资源的需求,选择Local即可
4.初始化Objects,这里我通常会右键Create一个Cache Initialization Settings,改好之后放到这里面


然后就是Cache Directory Override这一栏填上{UnityEngine.Application.persistentDataPath},相信了解这个地址的同学知道它的含义,简单来说这个地址就是用来热更的,这样可以方便我们管理资源,否则Addressables会将资源下载到另外一个缓存文件夹里
这些都设置好了之后,就是更新的操作了,接下来是一个示例:

我们先随便在场景里创建一个cube,然后让它变成一个prefab

再随手创建两个材质球,一个红色一个黄色,将红色材质球拖给Cube,通过改变这个cube的材质球来对它进行热更
1.勾选Build Remote Catalog,取消勾选Disable Catalog Update on Startup,取消之后这样每当我们重新打开App,调用Addressables.InstantiateAsync生成这个Cube的时候Addressables都会先检查catalog更新然后下载最新的Cube到本地,最终在场景里生成最新的Cube

2.将Cube拖到这个默认的Group下,然后单击或者右键选择下图简化名字,这个Name:"Cube"就是我们之后使用Addressables API加载Cube需要传入的参数名

3.Group设置里选择Remote,红框里使用你自己的资源服务器地址,在Addressables Profiles里设置

4.点击Build->New Build->Default Build Script,Unity会自动为我们将资源打出成ab包

5.在Assets同级的ServerData里面,可以找到打出来的ab包

大概有这些文件:
.hash文件内容是.json文件的md5 ,一般更新的时候都是先对比这个md5有没有发生改变,有再比对.json里面的内容,最终确定要下载的资源
然后将这些资源放到我们的资源服务器上
6.接着在工程的场景里随便创建一个GameObject,再随便创建一个脚本,在Start方法里只做一件事,那就是输入这行代码:
Addressables.InstantiateAsync("Cube");
这个方法会生成最新的Cube,编译好了build and run一个exe,你就能在场景里看到这个红色的Cube了
7.接下来我们把yellow材质球拖给Cube,如图

然后我们对这个黄色Cube打包

这里需要注意,当我们选择的更新形式是Can Change Post Release时,我们就采用上图的Update a Previous Build,然后选择你对应平台里的addressables_content_state.bin文件就可以打出新的ab包了

如果是Cannot,那我们就需要点击Tools->Check for Content Update Restrictions,它会生成一个新的Group,如下图:
再执行Update a Previous Build,然后选择你对应平台里的addressables_content_state.bin文件才可以打出新的ab包
8.我这里采用的是Can Change Post Release方式,再把这些资源都上传到资源服务器

重新打开exe,是不是变成了黄色了?到这里相信你们对这个操作流程就熟悉了,至于一些高阶的用法,我会在下一章详细讲解
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里编辑 3.解析依赖到项目中
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手
我正在尝试将一个资源属性的默认值设置为另一个属性的值。我正在为我正在构建的tomcat说明书定义一个资源,其中包含以下定义。我想要可以独立设置的“名称”和“服务名称”属性。当未设置服务名称时,我希望它默认为为“名称”提供的任何内容。以下不符合我的预期:attribute:name,:kind_of=>String,:required=>true,:name_attribute=>trueattribute:service_name,:kind_of=>String,:default=>:name注意第二行末尾的“:default=>:name”。当我在Recipe的新block中引用我
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
三分钟集成Tap防沉迷SDK(Unity版)一、SDK介绍基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap推出防沉迷SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!开发环境要求:Unity2019.4或更高版本iOS10或更高版本Android5.0(APIlevel21)或更高版本🔗Unity集成Demo参考链接🔗UnityTapSDK功能体验APK下载链接二、集成前准备1.创建应用进入开发者后台,按照提示开始创建应用;2.开通服务在使用TDS实名认证和防沉迷服务之前,需要在上面创建的应