Unity为资源打包生成AssetBundle包(二)

Keywords:

接上文:Unity3d使用AssetBundle工作流程

Assets文件夹下的Editor文件夹(如果没有手动创建一个)下创建一个C#脚本,并编辑代码如下。

using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Collections.Generic;

public class ExportAssetBundles : MonoBehaviour {

    [MenuItem("当前editor/打包")]
    static void CreateAssetBundlesMain()
    {
        BuildPipeline.BuildAssetBundles("Assets/StreamingAssets", BuildAssetBundleOptions.None, BuildTarget.WSAPlayer);

    }
}

上面的代码注意,新版的打包必须指定平台,不同平台的资源包不能通用。Unity5.x以后提供了打包的UI,在inspector面板最下面,可以为不同的资源指定打入assetBundle包的名字和版本。

给每个资源设置对应的包名字和版本。这样就可以将不同资源分别打包。

利用inspector面板设置后,运行菜单 当前editor->打包 即开始打包

因为每个平台打包不通用,因此上面的打包代码可以改进一下:


    [MenuItem("当前editor/ANDROID打包")]
    static void CreateAssetAndroidBundles()
    {
        BuildPipeline.BuildAssetBundles("Assets/StreamingAssets", BuildAssetBundleOptions.None, BuildTarget.Android);
    }
    [MenuItem("当前editor/APPLE打包")]
    static void CreateAppleAssetBundles()
    {
        BuildPipeline.BuildAssetBundles("Assets/StreamingAssets", BuildAssetBundleOptions.None, BuildTarget.iOS);
    }
    [MenuItem("当前editor/UWP打包")]
    static void CreateUwpAssetBundles()
    {
        BuildPipeline.BuildAssetBundles("Assets/StreamingAssets", BuildAssetBundleOptions.None, BuildTarget.WSAPlayer);
    }


这样,在菜单面板就可以选定打包的平台了,不用每次修改代码,如下图所示:

下一节:处理Assets之间的依赖关系

作者:songshizhao 发表于:2017-03-06T09:20:12 访问量:1594