• 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后缀的信息文件可以用文本工具打开查看依赖关系等

  • 相关阅读:
    libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'
    Redis开启远程访问
    Centos7.5 防火墙设置
    Redis和MemCache的区别
    Redis的事务
    Redis持久化——AOF
    Redis持久化——RDB快照
    Redis配置文件介绍
    Redis常见操作命令
    Redis的五大数据类型
  • 原文地址:https://www.cnblogs.com/zhenlong/p/4859321.html
Copyright © 2020-2023  润新知