斗斗金 2022-09-16 14:12 采纳率: 50%
浏览 172
已结题

unity资源加载 ab加载Addressables

1.Addressables.UpdateCatalogs() 是不是自动匹配本地和服务器有什么需要更新,如果有并且下载到本地,那也就是每次打开游戏运行一次这个检测,是不是就完成了服务器全部更新到本地(这步不加载到内存 只是下载本地)
2.在使用Addressables.LoadAssetAsync 这个的时候,他也会首先去服务器查询和服务器有没有什么更新,如果有下载到本地然后加载到内存。 这个函数就2个事情 1个是查询服务器有没有更新 如果有下载下来,2加载到内存
3.关于预加载 Addressables.GetDownloadSizeAsync这个函数意义只是获取预加载包的大小,那就有一个问题了 我已经在1的时候自动更新了所有需要更新的文件,为什么还需要一次预加载去服务器下载数据 并且这个函数是不是只是获取大小 不下载数据
4.Addressables.DownloadDependenciesAsync 这个函数是不是才是执行3预加载函数下载功能,但是这个函数 包含加载到内存吗
5.在Addressables 中是不是一共2个事情,1个是比对服务器更新 下载到本 另外1个是 加载到内存
很多人说的加载功能是不是直接包含了这2点统称?
6.只有加载到内存以后我们才可以使用 Instantiate(加载到内存的名字); 例如生成这个物体
7.如果每次游戏开机都执行了Addressables.UpdateCatalogs() 自动更新,那预加载含义是 全部提前加载到内存吗?
还是有啥作用 有点懵逼了。

上面5个问题 我完全不能肯定我理解对不对 ,希望能给我纠正下,谢谢你

  • 写回答

2条回答 默认 最新

  • 带酒书生 2022-09-16 16:02
    关注

    小老弟How old are you?怎么又是你?
    不谈api的用法,因为实现更新的途径有很多种,但流程都是差不多的,我大概跟你说一下游戏里面ab包更新及加载的流程吧。
    游戏启动——》检测本地版本号与服务器版本号是否一致——》如果不一致检测并下载服务器的资源列表(这一步用www啊unitywebrequst啊等等都能实现,所以不用太在意手段)——》下载到本地进行资源读取(你玩游戏更新的时候下载完了更新包会提示你正在解压资源)——》加载到内存调用。
    1.对的
    2.你在1已经检查过更新了,同时拿到了最新版本的资源列表,然后你的api就执行下图的逻辑顺序。

    img


    3.注意,你第一步仅仅获取的是一个资源列表,并没有获取所有资源。

    img


    4.并不是,在2里面你加载某个资源它要一步步的找到自己依赖的东西然后加载,但是DownloadDependenciesAsync可以将指定资源的所有依赖资源全部加载好,方便调用,空间换时间嘛,具体描述可以看下图或者自己百度(机翻,有问题概不负责.......)

    img


    5.概念问题,不好说对错,无非一个笼统点一个具体点。
    6.是的,必须先有模板(预制体)才能实例化
    7.还是1.仅仅只是更新了个资源列表,撑死了几M?预加载的含义你理解的很对。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月16日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效