AssetBundle

来源:互联网 发布:淘宝搭配套餐的链接 编辑:程序博客网 时间:2024/05/22 06:24

AssetBundle

1.使用插件AssetBundleManager

1.1 资源导出

使用Asset/AssetBundles/BuildAssetBundles进行资源导出,资源导出的时候会根据当前的平台导出成Windows/Android/IOS等。导出的位置在AssetBundles目录下,该目录下会分出Windows/Android/IOS等目录。

 

1.2 资源加载

当使用AssetBundle时,只要指定对应AssetBundle的路径即可加载对应的资源。规则如下:

本地加载:本地加载需要使用前缀”file://”以表示他是一个本地文件。Eg.

路径设置"file://" + Application.dataPath + "/"

BaseDownloadingURL = "file://E:/Neo/AssetBundle/Assets/Android/" 资源下载路径

AssetBundleName = "Android" 资源包名

URL = "file://E:/Neo/AssetBundle/Assets/Android/Android" 整个资源的路径

在放置本地资源目录的时候只要放置成BaseDownloadingURL即可

 

网络加载:网络加载使用http://的具体路径进行加载。Eg.

路径设置"http://www.MyWebsite/MyAssetBundles/"

BaseDownloadingURL = "http://www.MyWebsite/MyAssetBundles/Android/" 资源下载路径

AssetBundleName = "Android" 资源包名

URL = "http://www.MyWebsite/MyAssetBundles/Android/Android" 整个资源的路径

在配置服务器目录的时候只要配置成BaseDownloadingURL即可

 

1.3 使用方法

1)设置AssetBundleURL 

AssetBundleManager.SetSourceAssetBundleURL("http://www.MyWebsite/MyAssetBundles/");

2)初始化AssetBundleManager

var request = AssetBundleManager.Initialize();

if (request != null)

yield return StartCoroutine(request);

3)异步加载资源

AssetBundleLoadAssetOperation request = AssetBundleManager.LoadAssetAsync(

assetBundleName, assetName, typeof(GameObject) );

 

if (request == null)

yield break;

 

yield return StartCoroutine(request);

GameObject prefab = request.GetAsset<GameObject> ();

 

 

4)异步加载关卡

AssetBundleLoadOperation request = AssetBundleManager.LoadLevelAsync(

sceneAssetBundle,  levelName, isAdditive);

if (request == null)

yield break;

 

yield return StartCoroutine(request);

 

1.4 代码解析

BuildAssetBundles

BuildPipeline.BuildAssetBundles Unity3d提供了这样一个方法允许对AssetBundle进行一键打包。其中第一个参数outputPath一般由AssetBundleOutputPath和PlatformName组成。

如果打包的目录不存在是会报错的,所以打包前先检查目录是否存在,如果不存在的话先创建目录。

 

AssetBundleManager

设置AssetBundle本地目录

SetSourceAssetBundleDirectory(string relativePath)

{

BaseDownloadingURL = GetStreamingAssetsPath() + relativePath;

//下载路径为StreamingAsset的路径加上相对路径

}

设置AssetBundle下载路径

SetSourceAssetBundleURL(string absolutePath)

{

BaseDownloadingURL = absolutePath + Utility.GetPlatformName() + "/";

//下载路径为绝对路径加上平台路径

}

初始化AssetBundleManager

var request = AssetBundleManager.Initialize();

if (request != null)

yield return StartCoroutine(request);

在初始化的时候首先下载Manifest文件

 

异步加载资源

LoadAssetAsync (string assetBundleName, string assetName, System.Type type)

 

 

异步加载关卡

LoadLevelAsync (string assetBundleName, string levelName, bool isAdditive)

 

 

继承自IEnumerator

IEnumerator是一个接口

    public interface IEnumerator

    {

        object Current { get; }

 

        bool MoveNext();

        void Reset();

}

 

AssetBundleLoadOperation实现了MoveNext方法,通知StartCoroutine何时终止。

public abstract class AssetBundleLoadOperation : IEnumerator

{

public object Current

{

get

{

return null;

}

}

public bool MoveNext()

{

return !IsDone();

}

public void Reset()

{

}

abstract public bool Update ();

abstract public bool IsDone ();

}

Update函数会在AssetBundleManager一直调用,直到IsDone达成

 

 

 

 

 

 

 

 

 

 

2.IIS服务器搭建

2.1安装IIS服务

在启用或关闭Windows功能中可以安装IIS相关的服务

2.2开启IIS与创建网站

在管理工具里有一个IIS管理器,打开后可以添加自己的网站。

2.3几个常见错误

403.14 没有配置目录浏览功能,在IIS管理器中找到目录浏览,然后启用功能

404.3 IIS文件保护,不在IIS指定的MIME类型里的文件不会操作。常见的如mp4/flv/iso/7z/apk等扩展名IIS没有指定MIME类型,这类文件默认在IIS里是不能下载的。只要在MIME类型里添加对应的类型进行支持即可。

 

3.

0 0
原创粉丝点击