Unity BuildPipeLine.BuildAssetbundle 打包场景、加载场景

一、打包场景

   //打包AB
    [MenuItem("AB/BuildAB")]
    static void Build()
    {
        string outPath = Application.streamingAssetsPath + "/AssetBundle";
        if (Directory.Exists(outPath))
            Directory.Delete(outPath);
        Directory.CreateDirectory(outPath);
        BuildPipeline.BuildAssetBundles(outPath, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindows);
        AssetDatabase.Refresh();
    }

打包场景命令和打包资源命令是一样的,都是:

        BuildPipeline.BuildAssetBundles(outPath, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindows);

不过有一点需要特别注意:打包场景的时候不要采用压缩格式,要不然加载的时候出不来!!!

二、加载场景

加载场景和加载资源命令是差不多的:

        string path = "file://" + Application.streamingAssetsPath + "/AssetBundle/" + sceneName + ".assetBundle";
        UnityWebRequest request = UnityWebRequest.Get(path);
        yield return request.SendWebRequest();
        if (request.error == null)
        {
            AssetBundle.LoadFromMemory(request.downloadHandler.data);
            SceneManager.LoadSceneAsync(sceneName);
        }
        else
        {
            Debug.Log(request.error);
        }

这里加载场景能与加载资源不一样的是:不需要写下面这行代码:


//AssetBundle ab = AssetBundle.LoadFromMemory(request.downloadHandler.data);
ab.LoadAsset(assetName);

场景就可以出现了。

over!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
buildpipeline.buildassetbundleUnity 引擎中的一个方法,用于将场景或资源打包成 AssetBundle,以便在游戏运行时动态加载。 具体用法如下: ```csharp public static AssetBundleBuild[] CreateAssetBundleBuilds() { // 创建一个包含需要打包的资源信息的 AssetBundleBuild 数组 AssetBundleBuild[] buildMap = new AssetBundleBuild[1]; buildMap[0].assetBundleName = "myassetbundle"; buildMap[0].assetNames = new string[] { "Assets/MyScene.unity", "Assets/Prefabs/MyPrefab.prefab" }; return buildMap; } public static void BuildAssetBundles() { // 获取打包输出目录 string outputPath = "Assets/AssetBundles"; // 打包配置信息 BuildAssetBundleOptions buildOptions = BuildAssetBundleOptions.None; BuildTarget buildTarget = BuildTarget.StandaloneWindows; // 创建打包目录 if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } // 执行打包 AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(outputPath, CreateAssetBundleBuilds(), buildOptions, buildTarget); // 打包完成后的操作 if (manifest != null) { Debug.Log("AssetBundle 打包完成!"); } else { Debug.LogError("AssetBundle 打包失败!"); } } ``` 以上代码会将场景 "Assets/MyScene.unity" 和预制件 "Assets/Prefabs/MyPrefab.prefab" 打包成一个名为 "myassetbundle" 的 AssetBundle,并输出到 "Assets/AssetBundles" 目录下。 需要注意的是,如果资源的路径中包含中文或特殊字符,在打包时可能会出现问题。因此,最好将资源放在英文命名的文件夹中,并使用相对路径来指定资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值