Unity编辑器右键菜单实现多平台游戏资源打包—AssetBundle的构建

news/2023/6/6 4:41:21

文章目录

      • 👉一、初识AssetBundle
      • 👉二、创建AssetBundle
      • 👉三、动手操作:实现右键菜单打包AssetBundle

👉一、初识AssetBundle

AssetBundle是Unity提供的一种打包资源的文件格式,比如模型、纹理和音频文件等的各种资源,允许使用WWW类流式传输从本地或远程位置来加载资源,从而提供项目的灵活性,减少初始应用程序的大小。

👉二、创建AssetBundle

在本博客,仅介绍单个预制体打包Bundle的方法。Unity为我们提供的唯一的API来打包AssetBundle。即:

BuildPipeline.BuildAssetBundles(string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform);

说明:

  • outputPath:AssetBundle的输出路径,资源会被编译保存到该路径下,注意编译的时候不会自动创建文件夹。
  • builds:AssetBundle构建的映射,可以是单个资源,也可以是多个资源一起打包。
  • assetBundleOptions:资源包构建选项,默认为None。
  • targetPlatform:目标构建平台。

👉三、动手操作:实现右键菜单打包AssetBundle

这里将以PC、Android、WebGL为例,添加编辑器右键菜单创建AssetBundle过程进行演示。

  1. 打开一个Unity工程项目,将场景中的物体拖入Asset文件夹下作为预制体。
    在这里插入图片描述

  2. 创建右键菜单脚本打包Bundle
    在这里插入图片描述
    脚本引入命名空间:using UnityEditor;放在Editor文件夹下,脚本核心代码如下:

using UnityEngine;
using UnityEditor;public class BuildAssetBundle
{[MenuItem("Assets/打包Bundle/PC端")]private static void BuildWindows(){BuildBundle(BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);}[MenuItem("Assets/打包Bundle/安卓端")]private static void BuildAndroid(){BuildBundle(BuildAssetBundleOptions.None, BuildTarget.Android);}[MenuItem("Assets/打包Bundle/Web端")]private static void BuildWebGL(){BuildBundle(BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.WebGL);}private static void BuildBundle(BuildAssetBundleOptions options,BuildTarget target){GameObject obj = Selection.activeGameObject;if(obj != null){if (PrefabUtility.IsPartOfPrefabAsset(obj)){string buildPath = EditorUtility.SaveFilePanel("请选择Bundle保存的路径","", obj.name , "bundle");string buildDir =System.IO.Path.Combine(System.IO.Path.GetDirectoryName(buildPath), target.ToString());//合并路径if (!System.IO.Directory.Exists(buildDir)){System.IO.Directory.CreateDirectory(buildDir);//创建目标平台的指定bundle路径}Debug.Log(buildDir);AssetBundleBuild[] builds = new AssetBundleBuild[1];builds[0].assetBundleName = obj.name + ".bundle";//后缀名可自定义string[] assetNames = new string[1];assetNames[0] = AssetDatabase.GetAssetPath(obj);builds[0].assetNames = assetNames;BuildPipeline.BuildAssetBundles(buildDir, builds, options, target);//开始打包AssetDatabase.Refresh();//刷新}else{Debug.LogError("请选择预制体进行打包!");}}}
}
  1. 右键菜单打包演示
    选择预制体——点击鼠标右键——选择打包Bundle选项——选择目标平台——选择输出文件夹——开始打包。
    在这里插入图片描述
    在这里插入图片描述

  2. 成功打包资源
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    可以看到每个平台的Bundle还是不太一样,这也跟设置的Bundle构建选项有关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4553597.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Wordpress分类目录文章列表分页时404解决办法!

前两天对网站的URL做了相关修改,使之结构从视觉上看起来更加简洁和一目了然(扁平化结构不变),当然也有顺带的对栏目“别名”的修改。 PS:“别名”是在URL中使用的别称,它可以令URL更美观。通常使用小写,只…

如何使用WordPress自带的批量编辑功能修改文章分类目录?

WordPress 自带的批量编辑功能其实还是挺好用的,比如我们想要将某一个分类的文章全部转移到新的分类中,文章量很少的情况下可以在 WordPress 后台 >> 所有文章中通过“快速编辑”一篇篇修改过来,但是如果文章量很多这个方法就很累人了&…

WordPress不同的分类_单页_文章页指定自定义不同的模板

用wordpress做网站时经常会需要子分类使用父分类模板,子分类文章页使用父分类文章页模板,不同分类使对应分类模板,或者多个分类共用一个模板,多个单页共用一个模板或者不同单页使用不同的模板,又或者让文章页和分类页一…

wordpress自定义显示分类文章的数目

在wordpress中,给娱乐分类版块添加文章时,当文章的数目多余12条时,多出来的文章就无法显示出来了。这究竟是什么原因呢?为了弄清楚,我就查看生活分类下的文章,也是显示12条,但是其他显示不出来的…

创建和管理文章分类

不同主题的文章划分到不同的分类,有助于访客寻找他们想要的内容,提高用户体验。所以,为你的网站创建文章分类是很有必要的。那么,WordPress系统如何创建和管理文章分类呢?今天倡萌就简单介绍一下。 创建分类之前&#…

WordPress入门05-WordPress创建和管理文章分类目录

不同主题的文章划分到不同的分类,有助于访客寻找他们想要的内容,提高用户体验。所以,为你的网站创建文章分类是很有必要的。那么,WordPress系统如何创建和管理文章分类呢? 创建分类之前,最好对你网站的内容…

CNN——对文章类型进行分类

引言:最进在搞机器学习,写了几篇东西,这准备用NLP技术,写一个对文章类型分类的模型。 一、搜集训练数据、验证数据和测试数据: 上面图中,分别是 : essay.test(测试数据): essay.train(训练数据): es…

【SSH】——Hibernate(5)关联映射之双向映射

在上一篇文章【SSH】——Hibernate(4)关联映射之单项映射中,介绍了关联映射的单向映射,今天通过hbm.xml配置文件来介绍一下关联映射的双向映射。 一)一对一关联映射 对比单向一对一映射,需要在IdCard加入…