网络资源加载:

 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. AngularJS DI(依赖注入)实现推测

    AngularJS DI(依赖注入) http://www.cnblogs.com/whitewolf/archive/2012/09/11/2680659.html 回到angularjs:在框架中 ...

  2. 玩转ubuntu之初体验

    安装的是ubuntu16.04.1,分区和具体细节就不多说了,非常简单 安装完之后要做的几件事: 1.设置root密码 #设置root密码 sudo passwd root 2.检查并更新系统 #ub ...

  3. 【Java编程思想笔记】注解1-简单了解注解

    文章参考:https://www.cnblogs.com/xuningchuanblogs/p/7763225.html https://www.cnblogs.com/xdp-gacl/p/3622 ...

  4. HT for Web框架使用心得

    一.简单介绍 在HT for Web的官网首页写着,构建先进2D和3D可视化所需要的一切. 是的,只要你看过官网,你就会知道,这是一个企业的.并非开源的且需要收费的框架. 因为公司的业务需要,且公司使 ...

  5. IIS 一键安装及卸载

    IIS6:适用于win server 2003:: ******************* :: * 安装 :: ******************* :Install Cls @echo. &am ...

  6. 再说C模块的编写(2)

    [前言] 在<再说C模块的编写(1)>中主要总结了Lua调用C函数时,对数组和字符串的操作,而这篇文章将重点总结如何在C函数中保存状态. 什么叫做在C函数中保存状态?比如你现在使用Lua调 ...

  7. 帆软报表(finereport)动态列查询

    新建普通报表,新建一个数据集ds1,sql语句:select * from 销量 设计模板:选择复选按钮组控件 设置  控件名称 paraed , 控件值设置为公式:["列名",& ...

  8. 帆软报表(finereport)参数组合/下拉参数联动

    首先实现下拉参数联动 1.参数的定义→添加控件绑定数据→参数过滤和参数面板样式 下拉复选框控件注意事项:select * from tablewhere 1=1${if(len(控件名称)=0,&qu ...

  9. Mysql索引机制(B+Tree)

    1,索引谁实现的: 索引是搜索引擎去实现的,在建立表的时候都会指定,搜索引擎是一种插拔式的,根据自己的选择去决定使用哪一个. 2,索引的定义: 索引是为了加速对表中数据行的检索而创建的一种分散存储的( ...

  10. Python3中的真值测试

    1. 真值测试 所谓真值测试,是指当一种类型对象出现在if或者while条件语句中时,对象值表现为True或者False.弄清楚各种情况下的真值对我们编写程序有重要的意义. 对于一个对象a,其真值定义 ...