AssetBundle
2016-03-19 16:39
441 查看
AssetBundle
1.使用插件AssetBundleManager1.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.
相关文章推荐
- 快速幂的详解(转载)
- CsToLua
- 8051单片机学习篇(二)---流水灯
- ProgressDialog使用总结
- VS2013软件的安装和单元测试
- 软件工程个人作业02。
- 输入系数a、 b、 c, 求解一元二次方程ax2+bx+c=0的根
- 圆与圆
- VLC 关键模块结构分析
- AsyncTask使用以及源码分析
- HIVE的内部表和外部表
- 给定两个已排序的表L1和L2 只使用基本的表操作编写计算L1∩L2的过程 交集
- 深度优先搜索
- discuz二级导航选择横排样式不显示的解决方法
- ResultSet
- 安卓静态Fragment与动态Fragment的理解
- 290. Word Pattern
- 六、Drawable
- hdu 2065 "红色病毒"问题
- 19. UDP 编程