废话不多说  直接上代码.

从服务器下载的, 很简单

private IEnumerator Start()
{
byte[] ab = null;
int len = 0;
WWW www =null;
foreach (string item in Directory.GetFiles("TestAssetBundles"))
{
www = new WWW(@"http://localhost:15109/TestAssetBundles/"+item.Split('\\')[1]);
yield return www;
if (www.isDone)
{
ab = www.bytes;
len = ab.Length;
}
// www.Dispose();

Stream str = null;
FileInfo file = new FileInfo(Application.persistentDataPath + "/"+item.Split('\\')[1]);

if (file.Exists)
{
file.Delete();
str = file.Create();
}

if (!file.Exists)
{
str = file.Create();
}

str.Write(ab, 0, len);

Debug.Log(item.Split('\\')[1]);
str.Close();
str.Dispose();
www.Dispose();
www = null;
}

www.assetBundle.Unload(true);

从下载的路径读取

string index;

private void Start()
{
index = GameObject.FindWithTag("SceneTag").name.Split('_')[1];
StartCoroutine(LoadScene());
}

public IEnumerator LoadScene()
{
UnityWebRequest request = UnityWebRequest.GetAssetBundle(@"file://" + Application.persistentDataPath + "/" + "TestAssetBundles"); // 获取主assetbundle 和打包时候生成的文件夹的名字相同

yield return request.Send(); //开始获取

AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request); //得到主assetbundle的对象

AssetBundleManifest abmanifest = ab.LoadAsset<AssetBundleManifest>("AssetBundleManifest"); //根据主assetbundle 找到主manifest 必须叫这个名

string[] dependencies = abmanifest.GetAllDependencies("uiroot" + index + ".unity3d"); //根据abm拿到参数的assetbundle的关联的assetbundle
List<AssetBundle> test = new List<AssetBundle>();
foreach (var item in dependencies) //遍历所有关联assetbundle的名字
{

UnityWebRequest requestchild = UnityWebRequest.GetAssetBundle(@"file://" + Application.persistentDataPath + "/" + item); //获取这些关联的assetbundle
yield return requestchild.Send();

AssetBundle tempAB = DownloadHandlerAssetBundle.GetContent(requestchild);//因为不需要实例关联assetbundle这些物体(这里是一些图集) 所以只需要将他们生成到项目中就可以了,不需要拿到ab实例?????????????????这是绝对不行了, 因为你没有办法在加载后卸载!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
print(tempAB);
test.Add(tempAB);
requestchild.Dispose();
requestchild = null;

}

UnityWebRequest requestRoot = UnityWebRequest.GetAssetBundle(@"file://" + Application.persistentDataPath + "/" + "uiroot" + index + ".unity3d");
yield return requestRoot.Send();
AssetBundle abRoot = DownloadHandlerAssetBundle.GetContent(requestRoot);
GameObject go = abRoot.LoadAsset<GameObject>("UI Root" + index);

foreach (AssetBundle item in test)
{
item.Unload(false);
}

//request.Dispose();
//requestRoot.Dispose();
ab.Unload(false);
abRoot.Unload(false);
Instantiate(go);

ok在上班就不解释太多了

AssetBundle实现服务器下载并从本地读取的更多相关文章

  1. 使用xshell从远程服务器下载文件到本地

    XSHELL工具上传文件到Linux以及下载文件到本地(Windows) Xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz.首先你的L ...

  2. 从Linux服务器下载文件到本地命令

    从Linux服务器下载文件夹到本地1.使用scp命令 scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件 ...

  3. 从Linux服务器下载文件到本地

    通过安装xshell,连接服务器,通过以下命令可以方便的将服务器的文件下载到本地 #下载一个文件 sz filename #下载多个文件 sz filename1 filename2 #下载dir目录 ...

  4. Java 从服务器下载文件到本地(页面、后台、配置都有)

    先来看实现效果: 有一个链接如下: 点击链接下载文件:  第一种方法:Servlet实现 一.HTML页面部分: 1.HTML页面中的一个链接 <a id="downloadTempl ...

  5. 使用scp从远程服务器下载文件到本地

    [下载远程文件到本地] scp -P 6008 root@192.168.1.123:/usr/data/1.zip   /Users/abc/www [上传本地文件到远程] scp -P 6008  ...

  6. 使用“rz -be”命令上传文件至服务器;使用“sz 文件名”从服务器下载文件到本地

    注意:需要事先安装lrzsz服务 yum install -y lrzsz 因为服务器没有安装sftp服务,无法使用FileZilla.Xftp等连接服务器上传文件,这种情况可以利用rz命令上传文件. ...

  7. python urllib从远程服务器下载文件到本地

    #!/usr/bin/env python #-*-coding:utf--*-' #Filename:download_file.py import sys,os import urllib def ...

  8. Java实现从服务器下载文件到本地的工具类

    话不多说,直接上代码...... import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServlet ...

  9. java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)

    最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...

随机推荐

  1. scrapy_移除内容中html标签

    如何移除所获取内容中多余的html标签? 通过w3lib模块和re模块 #!/usr/bin/python3 # -*- coding: UTF-8 -*- __author__ = 'beimenc ...

  2. vi使用手册

    VI是unix上最常用的文本编辑工具,我自己电脑上面也装了VIM编辑器,这个据称是程序员码字神器我实在没觉得那里舒服了,所以又用回了自己的Sublime.这里整理下vi常用操作,如果以后直接在Linu ...

  3. Python之Django rest_Framework

    Django Rest Framework 一.rest api    a.api就是接口         如: - http://www.oldboyedu.com/get_user/       ...

  4. slick对超过22个属性的表进行映射的两种办法

    版权声明:本文为博主原创文章,未经博主允许不得转载 slick是scala的一个FRM(Functional Relational Mapper)框架,即函数式的关系数据库编程工具库.使用slick不 ...

  5. 基于Java的Arc Engine二次开发的环境的配置

    1.软件准备 ArcGIS for Desktop 10.2, Arc engine, jdk-7u60-windows-i586,Eclipse Mar2 2.软件的安装 2.1 ArcGIS fo ...

  6. 01 Java 搭建环境

    刚接触 Java 语言,为了方便以后查阅,将学习过程中遇到的知识点记录下来,作为学习笔记使用.在学习过程中 JDK 使用版本为 1.8.0_73,操作系统为 macOS Sierra 10.12.6. ...

  7. 《Thinking in Java》学习笔记(六)

    1.Class相关知识 Class类可以理解为类的图纸,通过Class类可以分析类的结构.构建出类的实例. Class.forName("test.TestClass").newI ...

  8. BZOJ 2024: [SHOI2009] 舞会 [容斥原理 高精度]

    题意:和上题基本一样,求至少k对a>b的方案数.不取模!!! 做k+1遍容斥就行了 高精度超强!!!几乎把所有的都用上了 然后,注意有负数,所以容斥的时候正负分别保存然后再一减就行了 这是我省选 ...

  9. pandas读取各类sql数据源

    大数据分析中,我们经常需要使用pandas工具读取各类数据源并将结果保存到数据库中. 本文总结了一些读取和写入常用数据库数据的一些方法,包括mysql,oracle,impala等. 其中读取数据库数 ...

  10. Es6 Symbol.iterator

    Symbol.iterator 为每一个对象定义了默认的迭代器.该迭代器可以被 for...of 循环结构使用. --描述 当需要迭代一个对象的时候(比如在 for...of 循环的开始时),它的 @ ...