AssetBundle实现服务器下载并从本地读取
废话不多说 直接上代码.
从服务器下载的, 很简单
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实现服务器下载并从本地读取的更多相关文章
- 使用xshell从远程服务器下载文件到本地
XSHELL工具上传文件到Linux以及下载文件到本地(Windows) Xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz.首先你的L ...
- 从Linux服务器下载文件到本地命令
从Linux服务器下载文件夹到本地1.使用scp命令 scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件 ...
- 从Linux服务器下载文件到本地
通过安装xshell,连接服务器,通过以下命令可以方便的将服务器的文件下载到本地 #下载一个文件 sz filename #下载多个文件 sz filename1 filename2 #下载dir目录 ...
- Java 从服务器下载文件到本地(页面、后台、配置都有)
先来看实现效果: 有一个链接如下: 点击链接下载文件: 第一种方法:Servlet实现 一.HTML页面部分: 1.HTML页面中的一个链接 <a id="downloadTempl ...
- 使用scp从远程服务器下载文件到本地
[下载远程文件到本地] scp -P 6008 root@192.168.1.123:/usr/data/1.zip /Users/abc/www [上传本地文件到远程] scp -P 6008 ...
- 使用“rz -be”命令上传文件至服务器;使用“sz 文件名”从服务器下载文件到本地
注意:需要事先安装lrzsz服务 yum install -y lrzsz 因为服务器没有安装sftp服务,无法使用FileZilla.Xftp等连接服务器上传文件,这种情况可以利用rz命令上传文件. ...
- python urllib从远程服务器下载文件到本地
#!/usr/bin/env python #-*-coding:utf--*-' #Filename:download_file.py import sys,os import urllib def ...
- Java实现从服务器下载文件到本地的工具类
话不多说,直接上代码...... import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServlet ...
- java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)
最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...
随机推荐
- scrapy_移除内容中html标签
如何移除所获取内容中多余的html标签? 通过w3lib模块和re模块 #!/usr/bin/python3 # -*- coding: UTF-8 -*- __author__ = 'beimenc ...
- vi使用手册
VI是unix上最常用的文本编辑工具,我自己电脑上面也装了VIM编辑器,这个据称是程序员码字神器我实在没觉得那里舒服了,所以又用回了自己的Sublime.这里整理下vi常用操作,如果以后直接在Linu ...
- Python之Django rest_Framework
Django Rest Framework 一.rest api a.api就是接口 如: - http://www.oldboyedu.com/get_user/ ...
- slick对超过22个属性的表进行映射的两种办法
版权声明:本文为博主原创文章,未经博主允许不得转载 slick是scala的一个FRM(Functional Relational Mapper)框架,即函数式的关系数据库编程工具库.使用slick不 ...
- 基于Java的Arc Engine二次开发的环境的配置
1.软件准备 ArcGIS for Desktop 10.2, Arc engine, jdk-7u60-windows-i586,Eclipse Mar2 2.软件的安装 2.1 ArcGIS fo ...
- 01 Java 搭建环境
刚接触 Java 语言,为了方便以后查阅,将学习过程中遇到的知识点记录下来,作为学习笔记使用.在学习过程中 JDK 使用版本为 1.8.0_73,操作系统为 macOS Sierra 10.12.6. ...
- 《Thinking in Java》学习笔记(六)
1.Class相关知识 Class类可以理解为类的图纸,通过Class类可以分析类的结构.构建出类的实例. Class.forName("test.TestClass").newI ...
- BZOJ 2024: [SHOI2009] 舞会 [容斥原理 高精度]
题意:和上题基本一样,求至少k对a>b的方案数.不取模!!! 做k+1遍容斥就行了 高精度超强!!!几乎把所有的都用上了 然后,注意有负数,所以容斥的时候正负分别保存然后再一减就行了 这是我省选 ...
- pandas读取各类sql数据源
大数据分析中,我们经常需要使用pandas工具读取各类数据源并将结果保存到数据库中. 本文总结了一些读取和写入常用数据库数据的一些方法,包括mysql,oracle,impala等. 其中读取数据库数 ...
- Es6 Symbol.iterator
Symbol.iterator 为每一个对象定义了默认的迭代器.该迭代器可以被 for...of 循环结构使用. --描述 当需要迭代一个对象的时候(比如在 for...of 循环的开始时),它的 @ ...