Unity 3D热更新知识入门小结之AssetBundle(1)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41967240/article/details/102652755

一、AssetBundle定义及作用

1. AssetBundle是一个压缩包,相当于一个文件夹,包含特定于平台的非代码的归档文件(模型、贴图、预制体、声音及场景 ),在游戏运行时候就会被加载。AssetBundle的文件是分为A serialized file和Resource files两类。

(1)A serialized file(序列化文件):资源被分解到它们各自的对象中,并写入到这个单个文件中。

(2)Resource files(资源文件):特定二进制资源(图片和声音)单独保存以便于加载。

2. AssetBundle能够表示相互间的依赖关系,其压缩包通常是采用LZMA和LZ4压缩算法,目的就是减少包的大小,从而可以满足更快网络速率的传输。

3. AssetBundles可以用来下载内容(DLC),加载针对使用用户平台的优化资产并减少运行时内存压力,即是减小安装包的大小。

二、AssetBundle使用流程

1. 流程

(1)指定资源的AssetBundle属性;

(2)开始构建AssetBundle包;

(3)上传AssetBundle包到相应的服务器;

(4)用户游戏加载AssetBundle包及资源。

2. 代码打包方法

using UnityEditor;
using System.IO;

public class CreateAssetBundle
{
    //编辑器中创建菜单选项(编辑器中点击Assets中的Build AssetBundles开始构建)
    [MenuItem("Assets/Build AssetBundles")]

    static void BuildAllAssetBundles()
    {
        string assetBundleDirectory = "Assets/AssetBundles";
        if (!Directory.Exists(assetBundleDirectory))
        {
            Directory.CreateDirectory(assetBundleDirectory);
        }
        BuildPipeline.BuildAssetBundles(assetBundleDirectory,BuildAssetBundleOptions.None,
                                                BuildTarget.StandaloneWindows);
    }
}

打包出来的文件

3. 打包注意事项

AssetBundle打包命名可以通过“/”划分文件夹分类打包。

4. 本地文件加载AssetBundle包及资源

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class LoadFromFile : MonoBehaviour
{
    void Start()
    {
        var myLoadedAssetBundle
            = AssetBundle.LoadFromFile("Assets/AssetBundles/ground.assetbundle");

        if (myLoadedAssetBundle == null)
        {
            Debug.Log("Failed to load AssetBundle!");
            return;
        }
        //加载指定资源
        var prefab = myLoadedAssetBundle.LoadAsset<GameObject>("Cube");
        Instantiate(prefab);

        //加载全部资源
        Object[] obj = myLoadedAssetBundle.LoadAllAssets();
        foreach(Object i in obj)
        {
            Instantiate(i);
        }
    }
}

未完待续.................................

第二章:https://blog.csdn.net/qq_41967240/article/details/102670989

欢迎关注我的微信公众号共同学习交流。

猜你喜欢

转载自blog.csdn.net/qq_41967240/article/details/102652755