Unity5系列资源管理AssetBundle——打包

资源管理是游戏开发的重要环节,Unity中使用AssetBundle可以非常方便地帮我们打包和更新游戏内容,在5系列中,AssetBundle更是方便好用,现在让我们先进行打包吧。

刚说了,5系列打包非常方便,细心的同志可能已经发现,在右下角多出了个AssetBundle标签工具栏,这使用得我们在选择要打包的文件时,不必再像4系列中一样要在Editor运行库脚本中写一堆取得对象的代码了。
那么,这个工具栏是怎么帮我们解决问题的呢?很简单,选中我们的需要的打包的资源(包括场景哦),然后在工具栏编辑和选择对应的标签。左边的AssetBundle是我们要打包的文件存放目录和名字,其中,在目录和名字之间用“/”分开,如“scenes/loaderscene.unity3d”,表示scenes目录下loaderscene.unity3d Bundle文件。后面还有一个Variants变量标签,其实就和后缀差不多(个人理解,有更好的使用请多多指教),但个人一般不推荐使用,而是像前面一样,直接写上后缀更直观方便。如下图:

bundle1

咱把需要打包的资源都设置好相应的标签,建议至少有一个场景和一个Prefab,以便我们后面测试。
OK,准备工作做好了,一定小代码还是需要的,建立一个Editor文件夹,并建立脚本BuildAssetBundleEditor,内容如下:

 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEditor;
 4 using System.IO;
 5  
 6 
 7 ///<summary>
 8 /// 打包编辑器
 9 /// </summary>
10  
11 public class MrCBuildAssetBundleEditor : EditorWindow {
12  
13     
14    /// <summary>
15     /// 获取不同平台下的包裹存储路径
16     /// </summary>
17  
18     public static string GetAssetBundlePath(BuildTarget target)
19     {
20         string opp = "";
21  
22         opp += Application.persistentDataPath;
23         opp += "AssetBundles/";
24  
25         switch (target) {
26         case BuildTarget.iOS:
27             {
28                 opp += "iOS/";
29                 break;
30             }
31         case BuildTarget.StandaloneOSXUniversal:
32             {
33                 opp += "MacOS/";
34                 break;
35             }
36         default:
37             {
38                 opp += "Others/";
39                 break;
40             }
41         }
42  
43         //当在硬盘目录结构里不存在该路径时,创建文件夹
44         if (!Directory.Exists(opp)) 
45         {
46             Directory.CreateDirectory (opp);
47         }
48  
49         return opp;
50     }
51  
52     [MenuItem("MrCAssetBundles/Build")]
53     public static void CustomBuildAssetBundle()
54     {
55         //包裹存储的路径...
56         string outputPath = MrCBuildAssetBundleEditor.GetAssetBundlePath(EditorUserBuildSettings.activeBuildTarget);
57  
58         //输出路径
59         Debug.Log (outputPath);
60  
61         //打包过程..
62         BuildPipeline.BuildAssetBundles(outputPath);
63     }
64 }

OK,打包完成后,可以到persistent目录下查看Bundle文件,其中manifest后缀的信息文件可以用文本工具打开查看依赖关系等

原文地址:https://www.cnblogs.com/zhenlong/p/4859321.html