网络资源加载:

 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. scala使用slick查询的全过程(使用cass class)

    1. 首先导包 <dependency> <groupId>com.typesafe.slick</groupId> <artifactId>slick ...

  2. day 16 - 1 内置函数(二)

    内置函数(二) reversed()  返回一个反向的迭代器 k = [1,2,3,4,5] k.reverse() #反转 print(k) k = [1,2,3,4,5] k2 = reverse ...

  3. DQL、DML、DDL、DCL区别

    DQL(data query language)数据查询语言 主要是由SELECT构成的查询语句 基本语法:select 字段名 from 表名 where 查询条件 DML(data manipul ...

  4. [Kubernetes]谈谈Kubernetes的本质

    当下k8s算是比较火的一个内容,那么它到底是什么呢,它为什么会这么火呢,它解决的是什么问题呢.这篇文章就尝试着来讲讲,Kubernetes的本质. 当我们谈Kubernetes的时候,总是会想起来Do ...

  5. 【原创】大叔经验分享(10)Could not transfer artifact org.apache.maven:maven. from/to central. Received fatal alert: protocol_version

    maven编译工程报错 [ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:add-source (s ...

  6. JAVA 遍历数组

    package Code411;//遍历数组public class CodeArray { public static void main(String[] args) { int[] array ...

  7. MySQL基础使用

    数据库 其实我们常常说的数据库,应该叫数据库系统. 表和库 数据表:用来保存数据的表格 数据库:用来统一管理数据表的容器 启动mysql 关闭mysql service mysqld start(启动 ...

  8. 20165314 [第二届构建之法论坛] 预培训心得(Java版)

    安装IDEA配置JDKsourcepath啥的之前已经弄好了 克隆项目 emmm这次的代码托管部分好像比之前做的要简单,之前还要git config啥的,还有就是git clone不会提示要输入账号密 ...

  9. Jmeter性能测试之分布式(五)

    Jmeter是纯Java开发的开源性能测试工具, Java程序是很吃内存的, 有时候一台负载机给服务器的压力是不够的, 需要很多台同时负载, 这个时候就需要用到分布式了. 1. 组网图大概就是这样的 ...

  10. spring boot 启动

    启动spring boot java -jar tuia-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod 查找进程 ps aux|grep tuia- ...