当前使用的是unity2018.2.6版本。

  生成AssetBundle

  这个版本生成AssetBundle有两种方式,一种是在资源的Inspector面板下边配置AssetBundle名称,然后调用下面第一种方式打AssetBundle包。第二种方式是使用下面第二个API,在AssetBundleBuild数组中配置资源的路径和AssetBundle名称。

  public static AssetBundleManifest BuildAssetBundles(string outputPath, BuildAssetBundleOptions assetBundleOptions, BuildTargettargetPlatform);

  public static AssetBundleManifest BuildAssetBundles(string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions,BuildTarget targetPlatform);

  生成AssetBundle时要注意当前Editor的目标平台,不同平台对应生成不同的AssetBundle。

  打完整包时的AssetBundle处理

  将版本配置文件放在StreamingAssets目录中,将生成的AssetBundle资源放在StreamingAssets文件夹下的各个平台对应的文件夹下,跟随完整包一起打出。游戏中从持久目录中加载资源,这种方式灵活性较高,可以方便替换跟随完整包一起打出的那部分AssetBundle资源,重要的是可以使用AssetBundle.LoasAsset()这种加载方式,也是官方推荐的加载方式。

  版本更新

  在启动游戏时检查persistentDataPath目录中是否有版本配置文件,如果没有,则需要将StreamingAssets目录中的版本配置文件和所有的AssetBundle文件拷贝过去。然后下载服务器的版本文件对比。版本号中包含大小版本标识,当大版本不一致时提示到下载完整包,当小版本号不一致增量更新资源服务器上的AssebBundle资源。

  加载StreamingAssets中的资源使用UnityWebRequest,文档推荐的加载方式,https://docs.unity3d.com/ScriptReference/Application-streamingAssetsPath.html

  增量更新:

    1.下载服务器上的AssetBundleManifest文件和本地AssetBundleManifest文件对比,记录HashCode不一致的AssetBundle文件和服务器有本地没有的AssetBundle文件。

    2.下载记录的文件列表中的AssetBundle文件到持久目录。

  资源加载

    1.编辑器中运行时使用AssetDatabase.LoadAssetAtPath加载资源

    2.在移动平台上运行时使用AssetBundle.LoadAsset加载

  github:https://github.com/sunsiwei/UnityHotfixABResource

  

Unity AssetBundle的生成、加载和热更新的更多相关文章

  1. Unity -- AssetBundle(本地资源加载和加载依赖关系)

    1.本地资源加载 1).建立Editor文件夹 2).建立StreamingAssets文件夹和其Windows的子文件夹 将下方第一个脚本放入Editor 里面 脚本一  资源打包AssetBund ...

  2. unity中ScriptableObject在assetbundle中的加载

    转载请标明出处:http://www.cnblogs.com/zblade/ 以前都是写一些个人的调研博客,从今天开始,也写一些个人在开发中遇到的一些可以分享的趟坑博客,为后续的开发人员提供一些绵薄之 ...

  3. Unity5 AssetBundle 打包以及加载

    using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor; us ...

  4. Assetbundle创建与加载

    [Assetbundle创建与加载] Unity有两种动态加载机制:一种是Resource.Load.一种是AssetBundle.Assetbundle是Unity Pro提供的功能,它可以把多个游 ...

  5. Assetbundle管理与加载

    最近在做项目优化的时候发现公司的项目用的还是老式的WWW去加载assetbundle资源的形式,而且是通过在两个Update里面分开加载AB和Asset的,这样虽然避免了协程的的使用,但是把一件事分开 ...

  6. java热加载和热部署

    JAVA热部署和热加载 联系与区别 Java热部署与热加载的联系 1.不重启服务器编译/部署项目 2.基于Java的类加载器实现 区别 部署方式 热部署在服务器运行时重新部署项目 热加载在运行时重新加 ...

  7. IDEA中Springboot静态文件加载(热部署)

    Springboot项目静态文件加载 昨天写项目的时候碰到一个问题,就是静态文件css无法读取到项目中,我仔细思考了下,总结了下,可能有两个问题 1.页面未加载更新 这个可能性非常大,Chrome就是 ...

  8. idea的热加载与热部署

    一:热加载与热部署     热部署的意思就是不用手动重启环境,修改类后,项目会自动重启.但是如果项目比较大,重启也需要耗时十几秒左右.     热加载意为不需要重新启动,修改了什么文件就重新加载什么文 ...

  9. 透过现象看本质:Java类动态加载和热替换

    摘要:本文主要介绍类加载器.自定义类加载器及类的加载和卸载等内容,并举例介绍了Java类的热替换. 最近,遇到了两个和Java类的加载和卸载相关的问题: 1) 是一道关于Java的判断题:一个类被首次 ...

随机推荐

  1. shell脚本实现并发控制

    ++++++++++++++++++++++++++++++++++++++++++++++++++标题:shell脚本实现并发控制内容:以ping测试主机存活为例,讲述如何通过命名管道文件以及描述符 ...

  2. dpdk-18.11网卡多队列RSS设置

    背景 最近在做将基于dpdk-16.11.1开发的程序,转移到基于dpdk-18.11版本下开发.遇到了网卡RSS配置的问题,在这里纪录一下. 问题 dpdk-16.11.1 在dpdk-16.11. ...

  3. 三、Redis基础操作

    前言: Redi是key-value的NoSQL,我们用Redis提供的redis-cli就能操作String类型key和各种数据类型value.但是放入的不是特定类型数据,添加的都是一个一个Stri ...

  4. RedisCache 缓存

    /// <summary> /// 这是包装过公用的,用于本站而已. /// </summary> /// <author>rixiao</author> ...

  5. js 替换所有指定的字符串

    js 的replace方法只替换第一个匹配到的的字符 如果要全局替换,使用以下方法(g为全局标志) str.replace(/需要替换的字符串/g,"新字符串") //如果有特殊符 ...

  6. php Header 函数使用

    <?php header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在 heade ...

  7. 【dp】P2642 双子序列最大和

    题目描述 给定一个长度为n的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出最大和.一个连续子序列的和为该子序列中所有数之和.每个连续子序列的最小长度为1,并且 ...

  8. Linux中查看TCP连接数

    一.查看哪些IP连接本机 netstat -an 二.查看TCP连接数 1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议 ...

  9. LeetCode--11_974_Subarray_Sums_Divisible_by_K

    题目链接:点击这里 public static int subarraysDivByK(int[] A, int K) { int ans = 0,sum = 0; int[] B = new int ...

  10. 逆FizzBuzz问题求最短序列

    问题描述 FizzBuzz问题:一个大于0的自然数能整除3,将输出“Fizz”:能整除5,将输出“Buzz”:能整除3和5,将输出“FizzBuzz”:否则输出自己. 逆FizzBuzz问题最短序列: ...