Unity3d中使用assetbundle

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1、导出assetbundle:

①单个资源导出成assetbundle;

②多个资源导出成一个assetbundle;

2、读取assetbundle:

①加载到内存;

②解压为具体资源。

1、导出assetbundle:

①单个资源导出成assetbundle;

BuildPipeline.BuildAssetBundle(Object obj,null,stringpath, BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android);//obj 单个资源,转成Object类型//path 路径(例如:"Assets/streamingassets/obj.unity3d"),资源包的后缀名可以任意写或不写//BuildAssetBundleOptions.CollectDependencies 包含资源的依赖关系,比如要导出的资源是一个PRefab,就会把其引用的mesh、贴图、材质球、动画统统导出到资源包里面去//BuildTarget.Android 导出的资源包是给什么平台用的,Android、PC、或者别的什么

②多个资源导出成一个assetbundle;

BuildPipeline.BuildAssetBundle(null, Object[] objs,stringpath, BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android);//objs 包含多个资源的数组,Object[]类型//path 路径(例如:"Assets/streamingassets/obj.unity3d"),资源包的后缀名可以任意写或不写//BuildAssetBundleOptions.CollectDependencies 包含资源的依赖关系,比如要导出的资源是一个prefab,就会把其引用的mesh、贴图、材质球、动画统统导出到资源包里面去//BuildTarget.Android 导出的资源包是给什么平台用的,Android、PC、或者别的什么

2、读取assetbundle:

①加载到内存;

②解压为具体资源。

IEnumerator Load(stringpath,stringname)

{/*下面是加载到内存的过程*/WWW bundle=newWWW(path);//例如:"Assets/streamingassets/obj.unity3d"yieldreturnbundle;/*下面是解压为具体资源的过程*/Object obj= bundle.assetBundle.Load(name);//name是具体资源的名字}

注:IEnumerator是协程,可以想象成Unity3d中的多线程,就是同时可以干很多事情的意思,虽然原理上与多线程不同,但使用起来的效果几乎没有区别。如果要处理的是很多资源的assetbundle的话,不管是导成一个了,还是多个的,要结合策划的具体需求合理规划协程的组织。

随手补充:

[MenuItem("Assets/Export Android Assetbundle")]staticvoidExport()

{stringfileName =Selection.activeObject.name;stringassetbundlePath = EditorUtility.SaveFilePanel("Save",application.dataPath, fileName,"assetbundle");

BuildPipeline.BuildAssetBundle(Selection.activeObject,null, assetbundlePath, BuildAssetBundleOptions.CollectDependencies |BuildAssetBundleOptions.CompleteAssets, BuildTarget.Android);

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航