U3D assetbundle加载与卸载的深入理解
using UnityEngine;
using System.Collections;
using System; public class testLoadFromAB : MonoBehaviour { IEnumerator DownloadAndCache()
{
while (!Caching.ready)
yield return null; //注意,从本地加载时,必须使用前缀 file:///或file://,从网络加载则使用 http://,这两种协议可以在iphone和WINDOWS, 安卓上通用
//UNITY MANUAL:
//http://, https:// and file:// protocols are supported on iPhone.
//ftp:// protocol support is limited to anonymous downloads only. Other protocols are not supported.
//WWW www = WWW.LoadFromCacheOrDownload ("file:///Z:/unity/learn-test/Assets/AssetBundles/cubes.unity3d", 22);
Debug.Log (Application.dataPath);
Debug.Log (Application.streamingAssetsPath);
Debug.Log (Application.persistentDataPath);
Debug.Log (Application.temporaryCachePath);
AssetBundle bundle = AssetBundle.LoadFromFile ("Assets/AssetBundles/cubes.unity3d");
// yield return www;
// if(!string.IsNullOrEmpty (www.error)){//有些平台不支持string为null,这种写法可以避免意外
// Debug.LogError (www.error);
// yield break;
// } //AssetBundle bundle = www.assetBundle; //注意必须使用Instantiate实例化出来才能将两个CUBE显示到场景中
//Instantiate实际上复制,浅复制,destroy也是浅销毁,只销毁物体本身不管物体的引用。
//prefab与gameobject一样,有些组件是引用的,比如材质贴图。
//loadasset去加载一个prefab时,会把此预设用到的所有资源都加载到内存,比如材质贴图。
Instantiate (bundle.LoadAsset ("DecalCube2"));
Instantiate (bundle.LoadAsset ("DecalCube3")) ; //参数为true时,将销毁所有从loadasset加载出来的资源,比如DecalCube2.prefab的材质与贴图。
//虽然我们使用了Instantiate对DecalCube2.prefab进行了复制,但只是浅复制,当bundle.Unload (true)时
//贴图被释放,我们的prefab就会丢失贴图变为紫色。
bundle.Unload (true); }
// Use this for initialization
void Start () {
StartCoroutine ("DownloadAndCache");
} // Update is called once per frame
void Update () { }
}
U3D assetbundle加载与卸载的深入理解的更多相关文章
- U3D assetbundle加载
using UnityEngine; using System.Collections; public class testLoadFromAB : MonoBehaviour { IEnumerat ...
- 细谈unity资源加载和卸载
转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 在了解unity的资源管理方式之后,接下来细谈一下Unity的资源是如何从磁盘中加载到运行时的内存中,以及又是如 ...
- C#中动态加载和卸载DLL
在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载.在C#中我们也能使用Assembly.LoadFile实 ...
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)0-------通过应用程序域AppDomain加载和卸载程序集
本博客中以“C#.Net 如何动态加载与卸载程序集(.dll或者.exe)”开头的都是引用莫问奴归处 微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外.车门的钥匙只有一把,若要获得还需要 ...
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)2----通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域
实现目的:动态加载dll,执行完毕之后可以随时卸载掉,并可以替换这些dll,以在运行中更新dll中的类. 其实就是通过应用程序域AppDomain加载和卸载程序集. 在这方面微软有篇文章http:// ...
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)1----C#中动态加载和卸载DLL
我们知道在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载. 在C#中我们也能使用Assembly.Load ...
- Qt中如何 编写插件 加载插件 卸载插件
Qt中如何 编写插件 加载插件 卸载插件是本文要介绍的内容.Qt提供了一个类QPluginLoader来加载静态库和动态库,在Qt中,Qt把动态库和静态库都看成是一个插件,使用QPluginLoade ...
- 关于XLL加载项动态加载、卸载的演示及XLL函数自定义类型注册的演示
1.在XLL中,把函数定义成不同的类型,在Excel中的实际效果也不同,具体如下: pxMacroType value ...
- 7. Oracle数据加载和卸载
在日常工作中:经常会遇到这样的需求: Oracle 数据表跟文本或者文件格式进行交互:即将指定文件内容导入对应的 Oracle 数据表中:或者从 Oracle 数据表导出. 其他数据库中的表跟Orac ...
随机推荐
- 如何在Eclipse卸载之前添加的android 的 ADT
Android开发环境配置中,怎么卸载ADT? 在Android开发环境配置中,可能会遇到很多问题,其中ADT安装失败需要卸载,怎么卸载呢?下面讲一种方法,希望能够对你有所帮助. 我采用的是Eclip ...
- Android开发--Apache服务器安装,解决Apache服务无法启动的问题
昨天学习Android XML解析的时候,想在自己的电脑上搭建一个最简单的Web服务器来存放一段XML文本,然后在Android程序中解析,查找了一些资料后,看到Apache服务器比较容易上手,使用范 ...
- IOS内存警告处理
IPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息.收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露 ...
- iOS实现(超级猜图)源码
//首先建立模型文件 QLLQuestion.hheQLLQuestion.m文件 #import <Foundation/Foundation.h> @interface QLLQues ...
- Markdown 五分钟速成
为了加强后续 Wiki 开发效率,请编写人员使用规定工具按照规范进行文档的编写. Windows 用户推荐使用编辑器 MarkdownPad 下载地址:http://markdownpad.com M ...
- java网络---查找Internet
连接到Internet的设备称为节点,计算机节点称为host. 为了区别每一台连接互联网的计算机,就有了Internet Protocol地址的概念. IPV4 & IPV6 我们以前默认的是 ...
- android 进程间通信---Service Manager(1)
Bind机制由4个部分组成.bind驱动,Client,ServiceManager &Service 1.Bind其实是一个基于linux系统的驱动,目的是为了实现内存共享. bind驱动的 ...
- animation of android (3)
视图动画,只有view可以使用. 在android3.0以后,属性动画. ValueAnimation 可以记录属性变化的过程,所以他的对象是任何object. 所以ValueAnimation 的真 ...
- svn错误
在myEclipse客户端第一次连到SVN时,如:svn://192.168.20.242/MyProject1,然后要求输入用户名和密码.如果用户名和密码输入出错了,强行确定后.问题来了!会出现,以 ...
- MySQL 强制操作以及order by 使用
我们以MySQL中常用的hint来进行详细的解析,如果你是经常使用Oracle的朋友可能知道,Oracle的hincvt功能种类很多,对于优化sql语句提供了很多方法. 同样,在MySQL里,也有类似 ...