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 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity AssetBundle资源打包与资源加载 -> 正文阅读

[游戏开发]Unity AssetBundle资源打包与资源加载

AssetBundle是Unity自带的一种资源打包方式,可以把AssetBundle文件当做加密过的压缩包。

一般会编写一个扩展器工具用于打包AB资源。

AssetBundle资源打包前置条件设置:

除了C#脚本外,我们选中的任何东西都会出现这个AB包设置界面。

?点击New...新建一个我们想要的名字(它会自动给你全转为小写格式),输入完名称后记得要回车保存一下;

旁边的是后缀,企业开发中常用的后缀有 unity3d,assetbundle,ab,其他自定义。

我这里定义为pedestal.ab,ULua的打包格式就是写死的assetbundle,请留意。

做完这些前置设置后,不管文件在哪个文件夹,它都会识别到然后打包走。看代码。

要放在文件夹里写个路径就会自动创建文件夹并保存在里面了。?

编辑器打包AB资源:

1、在项目根文件夹下创建一个“Editor”目录,用于存放编辑器扩展脚本;

2、引入命名空间“UnityEditor”,且脚本不需要继承 MonoBehaviour;

3、编写一个静态无返回值的方法,用于打包AB资源;

4、在方法的上方添加一个“特性”:[MenuItem("menu/itemName")],这个特性可以在Unity菜单上显示我们编写的方法,menu是菜单的名字,itemName是关于这个方法的名字(可以随便写)。

?

?代码演示:

BuildPipeline.BuildAssetBundles(路径, 选项, 平台);

参数分析:

①BuildAssetBundles:打包所有设置了 AssetLabels 的资源;

②路径:打包出来的 AssetBundle 文件存放的位置;

③选项:设置 AssetBundle 打包过程中的选项,None 表示忽略该选项;

④平台:AssetBundle 是平台之间不兼容的,IOS,Android 是两套资源;

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

public class BuildAssetBundles {

    //路径,一般打包在这个StreamAssets文件夹中。
    string path = Application.streamingAssetsPath;

    [MenuItem("AssetBundle/打包所有的AssetBundle")]
    static void BuildAllAssetBundleNoral()    //体积最小,常用这个.
    {
        //                              路径,                 选项.体积最小,        平台.Windows64x.
        BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
        Debug.Log("AssetBundle打包完毕");
    }

    [MenuItem("AssetBundle/打包所有的AssetBundle[不压缩]")]
    static void BuildAllAssetBundleCompre()    //体积最大,加载速度最快.
    {
        //                              路径,                    选项.加载速度最快,                         平台.Windows64x.
        BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindows64);
        Debug.Log("AssetBundle打包完毕");
    }

    [MenuItem("AssetBundle/打包所有的AssetBundle[LZ4]")]
    static void BuildAllAssetBundleChunk()    //2者之间.
    {
        //                              路径,                     选项.2者之间,                       平台.Windows64x.
        BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.StandaloneWindows64);
        Debug.Log("AssetBundle打包完毕");
    }
}

?

资源加载:

1、加载 AB 资源到内存

AssetBundle ab = AssetBundle.LoadFromFile("AB 包完整路径")

从一个完整的路径位置加载 AB 资源包到内存,返回一个 AssetBundle 对象;

2、从 AB 资源中获取资源

T resName = ab.LoadAsset<T>("游戏资源名称")

通过获取到的 AssetBundle 对象的“加载资源”方法,从 AssetBundle 对象内获取对应的游戏物体资源,并且返回该资源。效果类似于使用 Resources.Load 加载一个资源;

3、实例化资源

和使用 Resources.Load 加载到内存中的资源一样,直接实例化生成该物体。

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

public class AssetBundleLoad : MonoBehaviour
{
    void Start()
    {
        //从本地加载 AB 资源到内存.
        AssetBundle assetBundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "player/player1.ab");

        //从 AB 资源中获取资源.
        GameObject player = assetBundle.LoadAsset<GameObject>("Necromancer");

        GameObject.Instantiate<GameObject>(player, Vector3.zero, Quaternion.identity);
    }
}

总结:其实与Resources方法的不同在于,多了一步先加载到内存中,然后再从AB包中取出我们要用到的资源。

扩展:

当你打包完之后会多出了2个文件

?

它其实是AssetBundle文件的[目录],里面保存了所有ab资源包的路径地址(包含名字),第一个是给计算机看的,第二个.manifest文件是给我们人看的。

  游戏开发 最新文章
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-06-29 19:25:12  更:2022-06-29 19:25:55 
 
开发: 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/23 10:29:43-

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