1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Networking;
  5. using System.IO;
  6.  
  7. public class DownLoadAssetBundle : MonoBehaviour {
  8.  
  9. private string mainAssetBundleURL = @"http://www.XXX.com/AssetBundles/AssetBundles";
  10.  
  11. private string allAssetBundleURL = @"http://www.XXX.com/AssetBundles/";
  12.  
  13. void Start () {
  14.  
  15. StartCoroutine("DownLoadMainAssetBundel");
  16.  
  17. }
  18.  
  19. IEnumerator DownLoadMainAssetBundel()
  20. {
  21. UnityWebRequest request = UnityWebRequest.GetAssetBundle(mainAssetBundleURL);
  22. yield return request.Send();
  23. AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
  24. //Debug.Log("OK");
  25. AssetBundleManifest manifest = ab.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
  26. string[] names = manifest.GetAllAssetBundles();
  27. for (int i = ; i < names.Length; i++)
  28. {
  29. Debug.Log(allAssetBundleURL + names[i]);
  30. StartCoroutine(DownLoadSingleAssetBundel(allAssetBundleURL + names[i]));
  31. }
  32. }
  33. /// <summary>
  34. /// 下载单个AB文件
  35. /// </summary>
  36. IEnumerator DownLoadSingleAssetBundel(string url)
  37. {
  38. UnityWebRequest request = UnityWebRequest.GetAssetBundle(url);
  39. yield return request.Send();
  40. AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
  41. //Debug.Log("OK");
  42.  
  43. string[] names = ab.GetAllAssetNames();
  44. for (int i = ; i < names.Length; i++)
  45. {
  46.  
  47. string tempName = Path.GetFileNameWithoutExtension(names[i]);
  48. //Debug.Log(tempName);
  49.  
  50. GameObject gameObject = ab.LoadAsset<GameObject>(tempName);
  51. GameObject.Instantiate<GameObject>(gameObject);
  52.  
  53. }
  54.  
  55. }
  56.  
  57. }

下面是下载存储一条龙

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Networking;
  5. using System.IO;
  6.  
  7. public class DownLoadAssetBundle : MonoBehaviour {
  8.  
  9. private string mainAssetBundleURL = @"http://www.XXX.com/AssetBundles/AssetBundles";
  10.  
  11. private string allAssetBundleURL = @"http://www.XXX.com/AssetBundles/";
  12.  
  13. void Start () {
  14.  
  15. StartCoroutine("DownLoadMainAssetBundel");
  16.  
  17. }
  18.  
  19. IEnumerator DownLoadMainAssetBundel()
  20. {
  21. UnityWebRequest request = UnityWebRequest.GetAssetBundle(mainAssetBundleURL);
  22. yield return request.Send();
  23. AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
  24. //Debug.Log("OK");
  25. AssetBundleManifest manifest = ab.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
  26. string[] names = manifest.GetAllAssetBundles();
  27. for (int i = ; i < names.Length; i++)
  28. {
  29. Debug.Log(allAssetBundleURL + names[i]);
  30. //StartCoroutine(DownLoadSingleAssetBundel(allAssetBundleURL + names[i]));
  31. StartCoroutine(DownLoadAssetBundelAbdSave(allAssetBundleURL + names[i]));
  32. }
  33. }
  34. /// <summary>
  35. /// 下载单个AB文件不保存
  36. /// </summary>
  37. IEnumerator DownLoadSingleAssetBundel(string url)
  38. {
  39. UnityWebRequest request = UnityWebRequest.GetAssetBundle(url);
  40. yield return request.Send();
  41. AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
  42. //Debug.Log("OK");
  43.  
  44. string[] names = ab.GetAllAssetNames();
  45. for (int i = ; i < names.Length; i++)
  46. {
  47.  
  48. string tempName = Path.GetFileNameWithoutExtension(names[i]);
  49. //Debug.Log(tempName);
  50.  
  51. GameObject gameObject = ab.LoadAsset<GameObject>(tempName);
  52. GameObject.Instantiate<GameObject>(gameObject);
  53.  
  54. }
  55.  
  56. }
  57. /// <summary>
  58. /// 下载AB文件并保存到本地
  59. /// </summary>
  60. /// <returns></returns>
  61. IEnumerator DownLoadAssetBundelAbdSave(string url)
  62. {
  63. WWW www = new WWW(url);
  64. yield return www;
  65. if(www.isDone)
  66. {
  67. //表示资源下载完毕使用IO技术把www对象存储到本地
  68. SaveAssetBundle(Path.GetFileName(url), www.bytes, www.bytes.Length);
  69.  
  70. }
  71. }
  72. /// <summary>
  73. /// 存储AB文件到本地
  74. /// </summary>
  75. private void SaveAssetBundle(string fileName, byte[] bytes, int count)
  76. {
  77. FileInfo fileInfo = new FileInfo(Application.streamingAssetsPath + "//" + fileName);
  78. FileStream fs = fileInfo.Create();
  79. fs.Write(bytes, , count);
  80. fs.Flush();
  81. fs.Close();
  82. fs.Dispose();
  83. Debug.Log(fileName + "下载并存储完成");
  84. }
  85.  
  86. }

我的Unity学习笔记之——Unity中从网站下载ab资源+下载存储一条龙的更多相关文章

  1. Unity学习笔记(4) --- Unity的界面排版:初识GUI

    GUI和GUILayout是Unity提供的UIKit.在使用GUI的Controls时都要求设置Rect參数.没办法做到自己主动排版,给适配带来难度.而GUILayout的设计就是为了弥补这个缺陷, ...

  2. 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理

    (1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...

  3. [学习笔记] 在Eclipse中导入项目

    参考前文:[学习笔记] 在Eclips 中导出项目 选择已经导出的文件: 导入之后,项目结构如下: 至此,完成.

  4. CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  5. [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar中的类解压后放在运行jar中

    前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中 使用7z打开压缩包,查看所有依赖的jar都被解压以包名及class的方式存储在了运行jar中,此时jar的 ...

  6. [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中

    本文需要参考前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar在子目录中 上文是导出的运行的依赖jar被放在了子目录中,本文是将依赖jar放在可运行jar的本身,这样发布的 ...

  7. [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar在子目录中

    工程创建可参考前文: [学习笔记] 在Eclipse中使用Hibernate,并创建第一个工程,数据库为Oracle XE 在工程上鼠标右键: 找到java 选择 Runable JAR file N ...

  8. Web安全学习笔记 SQL注入中

    Web安全学习笔记 SQL注入中 繁枝插云欣 --ICML8 权限提升 数据库检测 绕过技巧 一.权限提升 1. UDF提权 UDF User Defined Function,用户自定义函数 是My ...

  9. (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...

随机推荐

  1. lnmp之Nginx配置https加密访问

    配置lnmp之Nginx网站支持https加密访问 注: 1. 这里拿购买的(pxsnx.pxjy.com)证书来做样例 证书文件共有三个---> (pxsnxg.pxjy.com_ca.crt ...

  2. Windows邮件客户端

    换回WIndows 因为要保存邮件 所以需要邮件客户端 Foxmail 腾讯自家 同样需要独立密码 之前的foxmail是全拼 新注册了一个@qq 发现新注册的@qq绑定到的是新的QQ号 算了 去用1 ...

  3. 基于STM32F429+HAL库编写的定时器主从门控模式级联输出固定个数PWM脉冲的程序

    硬件设备   42步进电机,步进电机驱动器,正点原子F429开发板 开发软件    keil5,Cube 综述   一般要精准的控制电机,就要控制单片机的引脚输出指定个数的PWM波,有多种可实现的方法 ...

  4. java调用webservice方法

    由于项目的历史原因,webservice服务端是乙方公司开发的,我们自己开发的系统需要去调用乙方公司的webservice接口.前面用了网上提供的一种方法(非生成代理类),怎么也调用不成功(也许是因为 ...

  5. ElasticSearch日常使用脚本

    1.启动服务要切换到非root账户 (例子:su - elk --command="/usr/local/elk/kibana/bin/kibana serve &")2. ...

  6. [转]Flash开发技能树

  7. windows内核驱动内存管理之Lookaside使用

    Windows内存管理中使用了类似于容器的东西,叫做Lookaside对象,每次程序员申请内存都会从Lookaside里面申请,只有不足的时候,Lookaside才会向内存又一次申请内存空间,这样减少 ...

  8. Systemd 教程

    目录 Systemd 教程 sshd.service配置模板 开机启动 启动服务 停止服务 配置文件 [Unit] 区块:启动顺序与依赖关系 [Service] 区块:启动行为 1.启动命令 2.启动 ...

  9. 解决修改css或js文件后,浏览器缓存未更新问题

    问题描述:最近在上线新版本项目的时候,发现有的用户的操作还是调用的老版本JS里面的内容,这样就造成原来新的JS里面加上的限制不能限制用户的操作,从而导致用户可以重复操作. 问题产生原因: 如果在用户之 ...

  10. 使用发射将JavaBean转为Map

    import java.lang.reflect.Field; private static Map<String, Object> objectToMap(Object obj) thr ...