首页 > 其他分享 >Assetbundle打包及加载入门详解(一)

Assetbundle打包及加载入门详解(一)

时间:2023-01-05 13:00:12浏览次数:37  
标签:文件 AssetBundle Assetbundle 打包 AssetBundles using 详解 加载


Assetbundle是unity的一种加载方式。这种加载可以从互联网上或者本地的文件夹中加载。

要求被加载的文件必须是Assetbundle定义的格式

首先制作Assetbundle:

在project的Editor文件夹下创建新脚本CreateAssetbundles

Assetbundle打包及加载入门详解(一)_System

脚本内容如下:

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

public class CreateAssetbundles {
[MenuItem("AssetsBundle/Build AssetBundles")]
static void BuildAllAssetBundles()//进行打包
{
string dir = "AssetBundles";
//判断该目录是否存在
if (Directory.Exists(dir) == false)
{
Directory.CreateDirectory(dir);//在工程下创建AssetBundles目录
}
//参数一为打包到哪个路径,参数二压缩选项 参数三 平台的目标

BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}
}

脚本编写后会看到菜单栏里多了一项assetsbundle,如下图:

Assetbundle打包及加载入门详解(一)_加载_02

这个选项就是用来把AssetBundles文件生成,并且放到AssetBundles这样一个文件夹里。

接下来说如何把一些objects定义为AssetBundle的文件。

首先新建一个cube,我们会看到在inspector面板的最下方有一个AssetBundle的设置选项,如下图:

我们看到下面有两个箭头处,第一个就是给这个cube定义AssetBundle的名字,自定义就可以了,第二个箭头处是给这个AssetBundle的物体加后缀格式(就像图片的.jpg .png这些,只是这里是可以自定义任何格式,本案例里定义的名字为mod,后缀名为mo)

Assetbundle打包及加载入门详解(一)_加载_03

当这些都选择好之后,去菜单里点击刚才我们制作的那个build assetbundles按钮,如下图:

Assetbundle打包及加载入门详解(一)_System_04

之后我们就会在代码设置的路径下看到创建的文件夹

Assetbundle打包及加载入门详解(一)_bundle_05

 

打开文件夹会看到里面有AssetBundles和AssetBundlesmanifest文件以及刚为cube命名的的mod的文件。AssetBundles和AssetBundlesmanifest文件这两个文件可以理解为是整个文件夹的老大。所有的maninfest文件都可以用记事本打开,在这个文件里有着被打包的文件的一些信息。

Assetbundle打包及加载入门详解(一)_加载_06

至此,所有的打包任务都完成了。接下来讲解,如何加载出打包的文件。

加载的方式有三种,分别是从硬盘中加载、从网络上加载、从内存中加载。

先讲从硬盘中加载,因为我的案例是放在我电脑下的这个硬盘的,所以用硬盘中加载。

新建一个脚本,挂在到一个物体上,然后运行就可以了。

脚本如下:

using UnityEngine;
using System.Collections;

public class LoadFromFileExample : MonoBehaviour
{

// Use this for initialization
void Start()
{
AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/mod.mo");


Object[] obj = ab.LoadAllAssets<GameObject>();//加载出来放入数组中
//创建出来
foreach (Object o in obj)
{
Instantiate(o);
Debug.Log(o.name);
}
ab.Unload(false);
}

运行结果:

Assetbundle打包及加载入门详解(一)_加载_07

至此加载也完成了。但是发现一个问题,就是物体的材质丢失了,原因是物体的材质没有被打包成assetbundle,而且也没有加载出来,这个在assetbundle中称为依赖关系。本节只写,如果打包,如何从硬盘加载,至于依赖关系和其他加载方法且听下回分解。

 

标签:文件,AssetBundle,Assetbundle,打包,AssetBundles,using,详解,加载
From: https://blog.51cto.com/u_8378185/5990737

相关文章

  • 一文详解RocketMQ的存储模型
    摘要:RocketMQ优异的性能表现,必然绕不开其优秀的存储模型。本文分享自华为云社区《终于弄明白了RocketMQ的存储模型》,作者:勇哥java实战分享。RocketMQ优异的性能表现,......
  • git commit 详解
    gitcommit命令用来将本地暂存的修改提交到版本库。gitcommit-m'提交信息'。我们用的比较多的应该就是-m参数。添加提交信息。经常手抖的同学可能会知道,gitcommit......
  • 详解kubernetes五种暴露服务的方式
    部署完服务终将是为了访问,那么kubernetes中service和ingress都可以将集群内部的服务能够支持外部访问。service可以让一组Pod(称为“后端”)为集群内的其他Pod(称为“前端”......
  • Day 06 模块加载机制
    模块加载机制一、优先从缓存中加载模块在第一次加载后会被缓存,多次调用require()不会导致模块的代码被执行多次不论内置模块、自定义模块、第三方模块都会从缓存中加载......
  • css中word-break和word-wrap用法详解
    css中的word-break和word-wrap属性在遇到中文和英文时的表现是不一样的,所以我们会在这些属性遇到中文、英文时分别进行说明。常用于换行word-wrap:break-word;word-b......
  • MapReduce详解
    1 MapReduce是什么​​Hadoop​---MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具......
  • 构建Feign项目时候,装载bean失败,只加载到一个
    描述:加载过程当中发现注入的bean只会加载本地包下的实现。无法访问远程服务。解决方案:启动类加上@EnableFeignClients,开启feign的功能远程方法由于是实现api模块下......
  • redis info 对应参数详解
    https://blog.csdn.net/qq_27342265/article/details/123094422   info命令的使用方法有以下三种:info:部分Redis系统状态统计信息。infoall:全部Redis系统状态统......
  • kafka详解(5)-KAFKA重复消费和消息丢失
    Kafka重复消费重复消费消息重复消费的根本原因都在于:已经消费了数据,但是offset没有成功提交。其中很大一部分原因在于发生了再均衡。1)消费者宕机、重启等。导致消息已......
  • python中模块的__all__属性详解
    python中模块的__all__属性详解python模块中的__all__属性,可用于模块导入时限制示例1普通类#kk.pyclassA():def__init__(self,name,age):self.name......