IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> AssetBundle -> 正文阅读

[游戏开发]AssetBundle

基本概念和知识

定义:
顾名思义,资源包,是Unity提供的一种以压缩格式打包后存储资源的集合。类似于压缩文件,可压缩资源包括:模型,贴图,预制体,音效,材质球等,唯独不能将C#代码打包进去。
作用:
1、可用于可下载内容(DLC),减小初始安装大小,加载针对最终用户平台优化的资源,以及减轻运行时内存压力。4
2、压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输。
3、存储位置,存储方式可以自定义,后期可以动态更新。
4、资源热更新
安装官方打包工具:
Window->packageManager->Asset Bundle Browser
在这里插入图片描述
Asset Bundle主要结构
根据官方文档描述,主要分为两种类型:

一个序列化文件:
包含分解为各个对象并写入此单个文件的资源。

资源文件:
某些资源(纹理和音频)单独存储的二进制数据块,允许 Unity 高效地在另一个线程上从磁盘加载它们。

基本流程

代码打包

为 AssetBundle 分配资源

1、从 Project 视图中选择要为捆绑包分配的资源
2、选中指定资源目标,分配 AssetBundle 和变体。
在这里插入图片描述点击New创建,输入想要的名称,不区分大小写,大写默认转换为小写,第二个为后缀,后缀名可以随便取,但是不可以是某种特定的文件格式,如rar,jpg等等。

AssetBundle支持文件夹结构,使用“/”来划分文件夹,例如MyAssets/01就是在MyAssets文件夹下面创建一个01文件夹。

基本代码:
首先需要在Assets下创建一个Editor特殊文件夹并在文件夹内创建以下脚本文件。

using UnityEditor;
using System.IO;

public class CreateAssetBundles
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        string assetBundleDirectory = "Assets/AssetBundles";
        //检查路径是否存在不存在就创建
        if (!Directory.Exists(assetBundleDirectory))
        {
            Directory.CreateDirectory(assetBundleDirectory);
        }
        BuildPipeline.BuildAssetBundles(assetBundleDirectory,
                                BuildAssetBundleOptions.None,
                                BuildTarget.StandaloneWindows64);
        //参数
        //1、要打包到的路径   Assets/AssetBundles
        //2、打包的设置       无
        //3、要打包到的平台   windows64位
    }
}

点击对应按钮即可打包

本地资源加载与卸载

1、创建空物体并创建相应脚本挂载到物体上。
2、创建脚本如下:

using UnityEngine;

public class LoadRes : MonoBehaviour
{
    void Start()
    {
        //从指定路径加载AssetBundle对象
      AssetBundle asset= AssetBundle.LoadFromFile("Assets/AssetBundles/turret.ab");
      GameObject turret= 
      asset.LoadAsset<GameObject>("Turret 1a"); //参数为之前创建AssetBundle的物体的名字
      Instantiate(turret);
    }
}

如果你忘记自己打包资源的名字,可以参考一下做法:

using UnityEngine;
public class CheckRes : MonoBehaviour
{
    void Start()
    {
        //从指定路径加载AssetBundle对象
      AssetBundle asset= AssetBundle.LoadFromFile("Assets/AssetBundles/turret.ab");
        //加载所有的资源
      Object[] objects = asset.LoadAllAssets<GameObject>();
        //遍历所有资源名称
        foreach (var item in objects)
        {
            Debug.Log(item.name);
        }
    }
}

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:47:50  更:2022-01-17 11:48:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:42:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码