行业知识
Unity中的StreamingAssets— AB包打包方法及AB包加载
打包StreamingAssets
创建资源
1. Assets下新建GameRes文件夹2. 新建一个UI预设
手动打包
- 加载官方提供好的打包工具:Asset Bundle Browser
- Windows->Package Manager 搜索Asset Bundle Browser,Install
- Windows-> AssetBundle Browser打开打包界面
- 直接将要打包的资源拖进Confihgure界面,或者右键点击添加新建
- Build界面
1. Build Target :选择目标打包平台
2. Output Path:输出路径
3. Clear Folders:每次打包时,将文件夹全部清空再打包
4. Copy to StreamingAssets:打包时将资源自动复制到StreamingAssets文件夹中
5. Compression:压缩方式,No Compression(不会把AB包进行压缩,解压快,但包特别大),LZMA(压缩包最小,解压满,如果需要使用AB包中的一个资源,需要将整个包解压),LZ4(压缩包大于LZMA,用什么就解压什么,内存占用低)
6. Exclude Type Information:打包时不写入资源的类型信息
7. Force Rebuild:重新打包时需要重新构建包。和Clear Folders类似,不同点在于不会删除不再存在的包。一般选择Clear Folders代替。
8. Ignore Type Tree Changes:增量构建检查时,忽略类型树的更改
9. Append Hash:将文件的哈希值附加到资源包名上
10. Strict Mode:严格模式,如果打包时报错,则打包直接失败(无法成功)。一般可以打开。
11. Dry Run Build:运行时构建
- 打包出的文件
1. 主包 : StreamingAssets文件夹中会有一个和AssetBundle文件夹中预设输出路径名字一样的打包文件(全是二进制),这些就是主包,包含包与包的依赖关系
2. 资源文件:没有后缀名的文件就是资源文件
3. Manifest文件:对应资源文件的配置信息,AB包文件信息;当加载时,提供了关键信息,资源信息,依赖关系,版本信息等等。
代码打包
- Editor下的代码
public class ABTool : Editor{ [MenuItem("GameTool/BuildAB包")] public static void BuildAB() { string targetPath = Application.streamingAssetsPath + "/ABRes"; BuildUtils.BuildGameResBundle(targetPath); Debug.Log("BuildAssetBundle Done"); }} - 打包代码
public class BuildUtils{ /// /// 打包游戏资源AssetBundle /// public static void BuildGameResBundle(string targetPath) { Hashtable tb = new Hashtable(); tb["uiprefabs.bundle"] = "GameRes/AUI"; AssetBundleBuild[] buildArray = MakeAssetBundleBuildArray(tb); BuildBundles(buildArray, targetPath); } /// /// 根据哈希表构建AssetBundleBuild列表 /// /// 哈希表,key为assetBundleName,value为目录 /// public static AssetBundleBuild[] MakeAssetBundleBuildArray(Hashtable tb) { AssetBundleBuild[] buildArray = new AssetBundleBuild[tb.Count]; int index = 0; foreach (string key in tb.Keys) { buildArray[index].assetBundleName = key; List fileList = new List(); fileList = GetFiles(Application.dataPath + "/" + tb[key], true); buildArray[index].assetNames = fileList.ToArray(); ++index; } return buildArray; } /// /// 递归遍历获取目标目录中的所有文件 /// /// 目标目录 /// 是否要切割目录,以Assets目录为根 public static List GetFiles(string sourceDir, bool splitAssetPath) { List fileList = new List(); string[] fs = Directory.GetFiles(sourceDir); string[] ds = Directory.GetDirectories(sourceDir); for (int i = 0, len = fs.Length; i -
点击工具栏上的GameTool/BuildAB包开始自动打包
-
生成AB资源
-
注意事项
- **打包带Shader的资源或者特效的预设时,要在设置中添加对应的Shaser。**设置方法如下—
- 打开BuIild Setting -> Player Setting
- 打开Graphics 下滑找到** Built-in Shader Setting -> Always Included Shaders
- 添加用到的Shaders
资源加载
加载资源
/// AssetBundle资源字典 Dictionary dic_abres; /// /// 加载资源包 /// void LoadABRes() { dic_abres = new Dictionary(); string[] res = { "uiprefabs"}; for (int i = 0; i
上一篇:英语里不好怎么说?
下一篇:亚马逊服务器怎么看价格?