码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Unity 热更--AssetBundle学习笔记 0.8


    合集 - Unity学习笔记(19)
    1.Unity学习笔记--基础2023-11-012.Unity学习笔记--入门2023-10-293.Unity学习笔记--数据持久化之PlayerPrefs的使用2023-11-194.Unity学习笔记--数据持久化XML文件(1)2023-11-205.Unity学习笔记--数据持久化XML文件(2)2023-12-016.Unity学习笔记--数据持久化Json2023-12-037.NGUI学习笔记(1)03-018.NGUI学习笔记203-039.NGUI学习笔记3.503-0510.NGUI学习笔记4.003-0611.Unity 热更--AssetBundle学习笔记 0.705-01
    12.Unity 热更--AssetBundle学习笔记 0.805-02
    13.Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】05-0314.[2]自定义Lua解析方式05-0615.Unity热更学习toLua使用--[1]toLua的导入和默认加载执行lua脚本05-0716.自定义Lua解析器管理器-------演化脚本V0.505-0817.使用自定义委托来调用Lua中的多返回值和长参数类型函数05-0918.使用自定义lua解析管理器调用lua脚本中的table05-1019.Lua热更学习--使用toLua中的协程05-12
    收起

    AB包的依赖

    接上一小结。

    在这里我们新建一个红色材质球,赋值给Cube预制体。此时不对材质球进行AB包分类,再次进行打包。运行脚本,发现红色cube成功的从AB包中加载出来。尽管我们没有将cube所依赖的材质球进行打包分类,但是打包时候unity会自动将包中的物体相关依赖打入包中【图三所示】。对于所依赖的资源我们如果不进行打包设置,也可以正常使用。

    img

    image-20240502143653075

    image-20240502144138523

    如果还是这个红色的材质球,需要被其它AB包中的预制体所使用呢?每个AB包里会默认打入一个材质球显然有些浪费AB包的空间。

    我们可以设置某个公共资源打入到具体的包中,而在加载使用AB包中的资源时候,把此AB包相关依赖的其它AB包也同时加载出来即可满足使用。也就是说我要加载A资源时候,会检查A资源依赖的其它资源包(可能是B、C),将ABC同样加载到内存中,这样在使用A的时候,不会造成资源丢失问题。

    img

    private void Awake()
      {
          //获取AB包 打包的文件已经拷贝到streamingAssets文件下 从此位置加载
          //注意!AB包不能重复加载
          ab  = AssetBundle.LoadFromFile(Application.streamingAssetsPath +"/"+"model");
          _image = GameObject.Find("Canvas/Image").GetComponent();
          //加载主包资源  
          mainAB = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + "StandaloneWindows");
          //获取主包中的存储的包和包之间的依赖关系
          AssetBundleManifest manifest = mainAB.LoadAsset("AssetBundleManifest");
          //获取model资源相关的依赖
          string[] dependencies = manifest.GetAllDependencies("model");
          foreach (var dependency in dependencies)
          {
              //加载依赖的ab包
              AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + dependency);
          }
      }
    
    

    其加载的就是AB主包资源中的mainfest文件,读取其中存储的model包的AB包资源依赖,从而将依赖资源所在的AB包也加载到内存中。

    img

  • 相关阅读:
    【MySQL】学习多表查询和笛卡尔积
    linux基础
    C++ 实现线程安全的map(OpenHarmony源码实现版)
    数据结构与算法-常用排序算法
    使用纯 CSS 实现超酷炫的粘性气泡效果
    除砷树脂HP-776
    2023年计划
    Meta-World:多任务、持续学习、终身学习、元学习、强化学习的基准和评估
    HTTP详细总结
    手把手带你入门 API 开发
  • 原文地址:https://www.cnblogs.com/TonyCode/p/18170452
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号