首页 > 代码库 > Unity3d中使用assetbundle
Unity3d中使用assetbundle
1、导出assetbundle:
①单个资源导出成assetbundle;
②多个资源导出成一个assetbundle;
2、读取assetbundle:
①加载到内存;
②解压为具体资源。
1、导出assetbundle:
①单个资源导出成assetbundle;
BuildPipeline.BuildAssetBundle(Object obj, null, string path, 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, string path, BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android);//objs 包含多个资源的数组,Object[]类型//path 路径(例如:"Assets/streamingassets/obj.unity3d"),资源包的后缀名可以任意写或不写//BuildAssetBundleOptions.CollectDependencies 包含资源的依赖关系,比如要导出的资源是一个prefab,就会把其引用的mesh、贴图、材质球、动画统统导出到资源包里面去//BuildTarget.Android 导出的资源包是给什么平台用的,Android、PC、或者别的什么
2、读取assetbundle:
①加载到内存;
②解压为具体资源。
IEnumerator Load(string path, string name){ /*下面是加载到内存的过程*/ WWW bundle = new WWW(path); //例如:"Assets/streamingassets/obj.unity3d" yield return bundle; /*下面是解压为具体资源的过程*/ Object obj = bundle.assetBundle.Load(name); //name是具体资源的名字 }
注:IEnumerator是协程,可以想象成Unity3d中的多线程,就是同时可以干很多事情的意思,虽然原理上与多线程不同,但使用起来的效果几乎没有区别。如果要处理的是很多资源的assetbundle的话,不管是导成一个了,还是多个的,要结合策划的具体需求合理规划协程的组织。
Unity3d中使用assetbundle
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。