欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

AssetBundle打包

程序员文章站 2022-07-08 10:09:01
关于AssetBundle打包什么是AssetBundle?AssetBundle是热更新的一部分,用于对游戏资源进行打包,可以在游戏运行时加载。AssetBundle可以从两个方面来解释:(1) 它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文件。这些文件可以分为两类:serialized file 和 resource files。(序列化文件和源文件)serialized file:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有...
  1. 什么是AssetBundle?
    AssetBundle是热更新的一部分,用于对游戏资源进行打包,可以在游戏运行时加载。

    AssetBundle可以从两个方面来解释:
    (1) 它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文件。这些文件可以分为两类:serialized file 和 resource files。(序列化文件和源文件)
    serialized file:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个)
    resource files:某些二进制资源(图片、声音)被单独保存,方便快速加载
    (2)它是一个AssetBundle对象,我们可以通过代码从一个特定的压缩包加载出来的对象。这个对象包含了所有我们当初添加到这个压缩包里面的内容,我们可以通过这个对象加载出来使用。

  2. AssetBundle打包流程
    (1)首先对想要进行打包的资源指定 AssetBundle属性,如图所示
    AssetBundle打包
    (2)构建AssetBundle包
    (3)将AssetBundle包上传到服务器中
    (4)加载AB包和包里面的资源

  3. 如何构建AB包?

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

public class CreatAssetBundles
{
    [MenuItem("Assets/Build AssetBundle")]
    static void BuildAllAssetBundle()
    {
        string dir = "AssetBundle";//储存打包后的AB包的路径
        if (Directory.Exists(dir) == false)
        {
            Directory.CreateDirectory(dir);
        }
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);//使用BuildPipeline.BuildAssetBundles进行构建;其中BuildAssetBundleOptions为压缩方式(分为LZMA和LZ4),BuildTarget为使用的平台.
    }
}

  1. 如果加载AB包?
    主要分为两种从本地加载和从服务器上加载
    (1)从本地加载
    使用AssetBundle.LoadFromFile
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LoadAB : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
       AssetBundle ab =AssetBundle.LoadFromFile("AssetBundle/wall.ab");
        GameObject GO = ab.LoadAsset<GameObject>("timg");
        Instantiate(GO);
    }

}

(2)从服务器上加载
使用UnityWebRequest
AssetBundle打包

在最后给大家推荐一款AssetBundle工具
https://github.com/Unity-Technologies/AssetBundles-Browser
非常好用!
AssetBundle打包

本文地址:https://blog.csdn.net/weixin_42758300/article/details/107880367