码迷,mamicode.com
首页 > 编程语言 > 详细

[Unity AssetBundle]Asset资源处理

时间:2014-12-04 17:27:52      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   on   

什么是AssetBundle

在很多类型游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态的下载和加载。因此,Unity引擎引入了AssetBundle这一技术来满足开发者的需求。

AssetBundle是Unity引擎提供的一种用户存储再远的文件格式,它可以存储任意一种Unity引擎能够识别的资源,例如模型、纹理、音频、动画甚至整个场景。

同时,AssetBundle也可以包含开发者自定义的二进制文件,只需要将二进制文件的扩展名改成.bytes,Unity引擎就可以识别它为TextAsset,从而就可以打包到AssetBundle文件里边。

如何创建AssetBundle

//通过该接口,开发这可以将编辑器中任意类型的Asset打包成AssetBundle文件.
BuildPipeline.BuildAssetBundle(null,null,null,null,null);

 

BuildAssetBundle的参数
 参数 解释说明
mainAsset 用于指定该AssetBundle文件中的主要资源,该资源可以通过AssetBundle.mainAsset来直接进行读取
assets   用于指定该AssetBundle文件中包含的资源
pathName 用于指定该AssetBundle文件的创建地址
assetBundleOptions 用于指定该AssetBundle文件的创建选项,默认情况下为Collect Dependencies和CompleteAssets
targetPlatform 用于指定改AssetBundle文件所用于发布的平台

 

//通过该接口,开发者可以直接将项目中的一个或者若干个场景以流式加载的方式打包成AssetBundle文件。
BuildPipeline.BuildStreamSceneAssetBundle(null,null,null);

 

BuildStreamedSceneAssetBundle
参数 解释说明
levels 用于指定要被打包进入AssetBundle文件的场景名称
locationPath 用于指定该AssetBundle文件的创建地址
target 用于指定该AssetBundle文件所用于的发布平台

 

//该接口功能与BuildPipeline.BuildAssetBundle接口相同,但是创建时可以每个Object指定一个自定义的名字
BuildPipeline.BuildAssetBundleExplicitAssetNames(null,null,null,null,null);

  

如何下载AssetBundle

非缓存机制

void Start () {
    StartCoroutine ("LoadAsset");
}
public IEnumerator LoadAsset()
{
    WWW www = new WWW (url);
    yield return www;
}

缓存机制

void Start () {
    StartCoroutine ("LoadAsset");
}
public IEnumerator LoadAsset()
{
    WWW www = WWW.LoadFromCacheOrDownload (url, 5);
    yield return www;
}

 

如何加载AssetBundle

WWW.assetbundle属性

	void Start () {
		StartCoroutine ("LoadAsset");
	}
	public IEnumerator LoadAsset()
	{
		WWW www = WWW.LoadFromCacheOrDownload (url, 5);
		yield return www;
		
		
		if (www.error != null) {
			Debug.Log (www.error);
			return;
		}
		AssetBundle bundle = www.assetBundle;
	}

  AssetBundle.CreateFromFile方法

	void Start () {
		AssetBundle bundle = AssetBundle.CreateFromFile (path);
	}

  AssetBundle.CreateFromMemory

	void Start () {
		StartCoroutine ("LoadAsset");
	}
	public IEnumerator LoadAsset()
	{
		WWW www = WWW.LoadFromCacheOrDownload (url, 5);
		yield return www;
		
		
		if (www.error != null) {
			Debug.Log (www.error);
			return;
		}
		
		byte[] data = www.bytes;
		AssetBundle bundle = AssetBundle.CreateFromMemory(data);
	}

待续...

[Unity AssetBundle]Asset资源处理

标签:style   blog   io   ar   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/daxiaxiaohao/p/4143264.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!