网络资源加载:

 string path ="file://"+ Application.streamingAssetsPath + "\\windows\\123";
string _path = "file://" +
Application.streamingAssetsPath + "\\windows\\ziyuab";
using (WWW www = new WWW(path))
{
yield return www;
using (WWW Xww = new WWW(_path))
{
yield return Xww;
if (www != null && Xww != null)
{
AssetBundle ab = www.assetBundle;
AssetBundle et= Xww.assetBundle;
if (ab != null)
{
GameObject tempObj = ab.LoadAsset<GameObject>("Cube");
Instantiate(tempObj);
}
}
else
{
Debug.Log("下载不成功!");
}
}
}

注意:定义路径如果是本地文件的话,在路径前加上"file://"

加载依赖关系:

   string ABPath;
public string ABName;
string bpath;
List<AssetBundle> aBlist;
void WanZheng()
{
aBlist=new List<AssetBundle>();
ABPath = Application.streamingAssetsPath + "\\windows\\";
bpath = Application.streamingAssetsPath + "/windows/windows";//依赖关系资源读取总路径
Yilai(bpath);//判断物体是否有依赖,有就加载出来,没有就不加载
#region 加载预制体,并实例化
AssetBundle _ab = AssetBundle.LoadFromFile(ABPath+ABName);//在此处_ab已将依赖加载出来了
GameObject obj = _ab.LoadAsset<GameObject>("Cube");
Instantiate(obj);
#endregion #region 释放内存
foreach (AssetBundle item in aBlist)
{
item.Unload(false);//清除依赖内存
}
_ab.Unload(true);//清除物体本身内存
AssetBundle _ab01 = AssetBundle.LoadFromFile(ABPath + ABName);//在此处_ab已将依赖加载出来了
GameObject obj01 = _ab01.LoadAsset<GameObject>("Cube");
Instantiate(obj01,Vector3.one,Quaternion.identity);
#endregion
}
void Yilai(string bpath)
{
AssetBundle yilaiAB = AssetBundle.LoadFromFile(bpath);//读取依赖
AssetBundleManifest manifest
= yilaiAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");//读取依赖关系列表
string[] depndencies = manifest.GetAllDependencies(ABName);//按照名字加载名字旗下的依赖关系 //将依赖放入列表并加载出来
if (depndencies.Length!=)
{
foreach (string s in depndencies)
{
aBlist.Add(loadDepndenciesByList(ABPath,s));
}
}
}
private AssetBundle loadDepndenciesByList(string ABpath,string name) //加载依赖文件,按列表里的名字
{
return AssetBundle.LoadFromFile(ABpath+name);
}

笔记:

yield return xy;意思是线程中断,等待过程完成之后再进行.

截至目前学习存在的问题:

1). 实战项目中成百上千的大量资源需要(批量)打包处理,不可能手工维护方式给每个资源添加assetbundle包名称

2). Unity维护AssetBundle包的依赖关系不是很完善,主要体现在Unity仅仅维护包与包之间依赖关系的记录上。

(通过每个包创建的*.manifest文本文件实现)。如果要加载一个有多重依赖项的AssetBundle包,则要手工写代码,

把底层所有依赖包关系需要预先进行加载后才可以

3). AssetBundle包的商业应用涉及很多步骤: AB包的加载、 AB包依赖关系(要求: 不遗漏、不重复)、 资源的

提取与释放等。手工以及简单写代码实现功能,将是一项繁重海量工作,效率低下

Unity进阶----AssetBundle_02(加载依赖关系及网络资源)(2018/10/31)的更多相关文章

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

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

  2. 【php】命名空间 和 自动加载的关系

    目的 本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧 命名空间(n ...

  3. 升级MAC OS到10.13, 10.14系统后UNITY工程无法加载资源的解决办法

    升级MAC OS到10.13, 10.14系统后,出现UNITY工程无法加载资源的情况: Unity项目中Asset目录显示为空! 解决办法一: 打开Launchpad中的磁盘工具 (也就是实用工具下 ...

  4. Unity移动游戏加载性能和内存管理-学习笔记

    前言 正在学习Doctor 张.鑫大佬的移动游戏加载性能和内存管理,内容非常非常的干,所以我烧了很多开水,边喝边看,一边拿小本几做好笔记 本文只是关于前2章的内容笔记,关于各种资源的加载耗时 纹理资源 ...

  5. Unity的资源加载以及AssetBundle的一些坑

    https://www.cnblogs.com/sigmadruid/p/4040803.html AssetBundle加载完毕,进行其中Asset的初始化后,不能立即Unload().否则Asse ...

  6. Unity Lightmap动态加载研究

    什么情况下需要Lightmap? 移动平台上目前暂时还不能开实时光影效果,会卡成幻灯片.所以就需要将光影烘焙到贴图上. 什么情况下需要动态加载Lightmap? 1.当项目抛弃了Unity的多场景模式 ...

  7. Unity 全面理解加载和内存管理

    最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别.Resources ...

  8. Unity中 动态加载 Resources.Load()和Asset Bundle 的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载. 初学Unity的过程中,会发现打包发布程序后,unity会自动将场景需要引用到的资源打包到安装包里,没有到的不会跟进去.我们在编辑器里看到的Ass ...

  9. UNITY 多SCENE加载与编辑

    Unity内部场景的加载分为两步: Loading.是指从文件.内存(主要是Streamed scene AssetBundle)中加载Scene的内容,创建并读取所有相关的Game objects. ...

随机推荐

  1. ssh远程登陆脚本(带跳板机)

    mac自带的终端不太好用,被推荐了一个iterm2的终端替代工具,确实比自带的终端好用不少.下面记录下通过脚本一键远程登录的过程: 下载地址:http://m4.pc6.com/xuh3/iTerm2 ...

  2. 使用 gcc 编译 libvmaf-1.3.9 时的 注意事项

    vmaf-1.3.9\wrapper\Makefile 首行添加 CXX = g++CC = gcccc = gcc CFLAGS_COMMON 行尾追加 -msse4.1 CFLAGS_COMMON ...

  3. formData 对象 与 Content-Type 类型

    FormData FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据.其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用.如 ...

  4. mitmproxy,mitmdump

    mitmproxy,mitmdump # mitmproxy 官网:https://mitmproxy.org/ # githubhttps://github.com/mitmproxy # wind ...

  5. 关于git 远程仓库密码一直输错的问题

    解决方法, git 换地方使用后需要重新配置秘钥,一个钥匙开一个地方的门: 如果还不行, 在控制面板-用户账户-凭据管理-加添凭证,输入正确的账号密码:因为Windows的凭据管理器里面可能保存了你刚 ...

  6. 计算机基础 & python基础

    五大组成部分 控制器 运算器(数学运算+逻辑运算) 存储器(存取数据) 输入设备(键盘.鼠标等) 输出设备(显示器.打印机等) CPU CPU=运算器+控制器 CPU的分类: 精简指令集(RISC): ...

  7. 移动端遮罩及阻止页面滑动,实用!!! 我们经常做一个fixed定位的遮罩和一个提示弹框,这时就要用到。记录--

    document.body.style.height = '100%'; document.body.style.overflow = 'hidden'; document.getElementByI ...

  8. 【batch】命令对比两个文件夹下的文件(增删改的对比)

    1.分别打印两个目录的结构 TREE D:\SOURCE /A /F >D:\SOURCE.TXT TREE D:\DEST /A /F >D:\DEST.TXT 2.然后使用工具/命令进 ...

  9. [原创]创芯电子实验室iFPGA-Cable JTAG工具实物图

    创芯电子实验室iFPGA-Cable JTAG工具实物图 对于Xilinx平台 基于FTDI 芯片的Xilinx JTAG 同时支持UART 电平1.8~5V 支持ISE和VIVADO 速度从10M. ...

  10. SpringBoot Mybatis项目中的多数据源支持

    1.概述 有时项目里里需要抽取不同系统中的数据源,需要访问不同的数据库,本文介绍在Springboot+Mybatis项目中如何支持多数据源操作. 有需要的同学可以下载 示例代码 项目结构如下: 2. ...