5.2_AssetBundles(打包)

打包文件和场景:

1、在Asset文件夹下创建名称为StreamingAssets的文件夹(自由命名,保存文件和读取文件的路径)。
2、创建C#脚本名称为MyAssetBundles(脚本放入Editor文件夹中,不能结成MonoBehaviour)。

using UnityEngine;

using System.Collections;

using UnityEditor;

public class MyAssetBundles

{

    //需要引用UnityEditor(特性),在unity菜单目录上会多出一个“Custom Editor”选项,子目录为“Create AssetBunldes Main”

    [MenuItem("Custom Editor/Create AssetBunldes Main")]

   //打包单个文件

    static void CreateAssetBunldesMain()

    {

        //获取在Project视图中选择的所有游戏对象

        Object[] SelectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

 

        //遍历所有选择的游戏对象

        foreach (Object obj in SelectedAsset)

        {

            //获取资源路径

            string sourcePath = AssetDatabase.GetAssetPath(obj);

 

            /*将Assetbundle放在StreamingAssets文件夹下,如果没有就创建一个,("StreamingAssets"移动平台下只能读取这个路径)

            /StreamingAssets是只读路径,不能写入

            /.assetbundle为文件后缀名称,可以修改

            */服务器下载:就不需要放在这里,服务器上客户端用www类进行下载。

 

            //在对应的目录位置(StreamingAssets)生成的文件名字为选择的“游戏对象的名字+.assetbundle”

            string targetPath = Application.dataPath + "/StreamingAssets/" + obj.name + ".assetbundle";

            //创建打包的资源,目录为StreamingAssets,名称为obj.name+.assetbundle

            //参数1、选择的对象;参数2、选择的对象组;参数3、路径和名称;参数4、资源包编译选项;参数5、目标平台(BuildTarget)参数5(可选),默认为web。

            if (BuildPipeline.BuildAssetBundle(obj, null, targetPath, BuildAssetBundleOptions.CompleteAssets))

            {

                Debug.Log(obj.name + "资源打包成功");

            }

            else

            {

                Debug.Log(obj.name + "资源打包失败");

            }

        }

        //刷新编辑器,重新导入有更新的资源。

        AssetDatabase.Refresh();

    }

    //“Custom Editor”选项,子目录为“Create AssetBunldes ALL”

    [MenuItem("Custom Editor/Create AssetBunldes ALL")]

   //打包所有文件

    static void CreateAssetBunldesALL()

    {

        //删除这个内容相关的缓存文件夹。

        Caching.CleanCache();

        //在对应的目录位置(StreamingAssets)生成的文件名字为ALL.assetbundle

        string Path = Application.dataPath + "/StreamingAssets/ALL.assetbundle";

        //获取在Project视图中选择的所有游戏对象

        Object[] SelectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

        foreach (Object obj in SelectedAsset)

        {

            Debug.Log("Create AssetBunldes name :" + obj);

        }

        //这里注意第二个参数就行

        if (BuildPipeline.BuildAssetBundle(null, SelectedAsset, Path, BuildAssetBundleOptions.CollectDependencies))

        {

            AssetDatabase.Refresh();

        }

        else { }

    }

    //“Custom Editor”选项,子目录为“Create Scene”

   [MenuItem("Custom Editor/Create Scene")]

   //打包场景

    static void CreateSceneALL()

    {

        //清空一下缓存

        Caching.CleanCache();

        //打包之后保存的路径和文件名称“AssetBundleScene.unity3d”

        string Path = Application.dataPath + "/AssetBundleScene.unity3d";

        //需要打包的场景文件,名称为"MyScene"

        string[] levels = { "Assets/MyScene.unity" };

        //打包场景

       //参数1:场景名称;参数2:路径;参数3:平台参数4:

BuildPipeline.BuildPlayer( levels, Path,BuildTarget.WebPlayer, BuildOptions.BuildAdditionalStreamedScenes);

        //刷新编辑器        

        AssetDatabase.Refresh();

    }

}

3、在Project面板中选择要打包的Prefab文件,点击Custom Editor→Create AssetBunldes Main选项,会在StreamingAssets目录下生成对应数量和文件名称的AssetBunlde文件,后缀名称为“.assetbundle”;选择Custom Editor→Create AssetBunldes ALL选项,打包所有文件会生成一个ALL.assetbundle,该文件内包含选中的所有资源。

打包场景直接点击Custom Editor→Create Scene,在资源目录下生成AssetBundleScene.unity3d文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值