unity3d学习之AssetBundle打包

首先在Assets下面创建Editor文件夹,并创建Build脚本

创建菜单栏按钮

[MenuItem("Tools/打包工具")]
public static void ShowWindow()//此方法表示“打包工具”按钮点击下的执行事件
{
	GetWindow(typeof(BuildEditor));//显示窗口,上面显示BuildEditor脚本的内容
}

显示UI

private void OnGUI()
{
	//下拉单选列表选平台
	this.platformType = (PlatformType)EditorGUILayout.EnumPopup("选择平台工具:",platformType);
	//勾选框
	this.isBuildExe = EditorGUILayout.Toggle("是否打包EXE: ", this.isBuildExe);
	//下拉多选框选打包选项
	this.buildAssetBundleOptions = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField("BuildAssetBundleOptions(可多选): ", this.buildAssetBundleOptions);
}

构建播放器

  //播放器(需要播放的场景,构建成功后存放的路径,选择目标构建平台,构建播放器选项)
    BuildPipeline.BuildPlayer(levels, $"{relativeDirPrefix}/{exeName}", buildTarget, buildOptions);

打包

  //打包(输出路径,AssetBundle构建选项,选择目标构建平台)LZMA,LZ4,无压缩 
  BuildPipeline.BuildAssetBundles(fold, buildAssetBundleOptions, buildTarget);

构建播放器目标平台的参数(目标构建平台):枚举类型 BuildTarget

BuildTarget.StandaloneOSX   				//构建一个独立的macOS(Intel 64位)。
BuildTarget.StandaloneWindows 			//构建Windows独立版。
BuildTarget.iOS							//构建iOS播放器。
BuildTarget.Android							//构建Android .apk独立应用。
BuildTarget.StandaloneLinux				//构建Linux独立版。
BuildTarget.StandaloneWindows64			//构建Windows 64位独立版。
BuildTarget.WebGL							//WebGL
BuildTarget.WSAPlayer						//构建Windows应用商店应用播放器。
BuildTarget.StandaloneLinux64				//构建一个Linux 64位独立版。
BuildTarget.StandaloneLinuxUniversal		//构建Linux通用独立版。
BuildTarget.PSP2							//构建PS Vita 平台。
BuildTarget.PS4							//构建PS4 平台。
BuildTarget.XboxOne						//构建一个Xbox One 平台。
BuildTarget.N3DS							//构建任天堂3DS平台。
BuildTarget.tvOS							//构建Apple的tvOS平台。
BuildTarget.Switch							//构建一个Nintendo Switch播放器。

构建播放器选项:枚举类型:BuildOptions

//执行指定的构建,无需任何特殊设置或额外任务
BuildOptions.None

//构建播放器的开发版本。
//开发版本包括调试符号并启用 Profiler。
BuildOptions.Development

//运行构建的播放器。
//在构建成功后会运行构建器
BuildOptions.AutoRunPlayer

//显示内置播放器。
BuildOptions.ShowBuiltPlayer

//构建压缩资产包,其中包含可通过UnityWebRequest类加载的流式场景。
BuildOptions.BuildAdditionalStreamedScenes

//在构建Xcode(iOS)或Eclipse(Android)项目时使用。
//在iOS上,此设置将附加现有的Xcode项目。将保留现有的Xcode项目设置更改。
//使用IL2CPP脚本后端,此设置还将允许生成的C ++代码的增量构建在Xcode中工作。
//在Android上,此设置将创建一个新的Eclipse项目。现有的Eclipse项目设置更改将被丢弃。
BuildOptions.AcceptExternalModificationsToPlayer

//通过编辑器中与探查器的连接启动播放器。
BuildOptions.ConnectWithProfiler

//允许脚本调试程序远程连接到播放器。
BuildOptions.AllowDebugging

//生成iOS Xcode项目时的Symlink运行时库。(更快的迭代时间)。
BuildOptions.SymlinkLibraries

//创建资产包时不要压缩数据。
//这使得构建和加载更快,但由于它要大得多,下载时间会更长。
BuildOptions.UncompressedAssetBundle

//将播放器设置为连接到编辑器。
//将Player设置为连接到Editor,它需要设置BuildOptions.Development。请注意,您只应在开发中使用它。
BuildOptions.ConnectToHost

//构建无头Linux独立版。
//不能用于进行开发构建。
BuildOptions.EnableHeadlessMode

//仅在项目中构建脚本。
//在使用BuildScriptsOnly之前,您需要构建整个Project。然后,您可以运行仅具有脚本更改的构建。
BuildOptions.BuildScriptsOnly

//在构建中包含断言。默认情况下,断言仅包含在开发构建中。
BuildOptions.ForceEnableAssertions

//在构建播放器时使用基于块的LZ4压缩。
/*当Player部署到设备时,此值允许以压缩形式存储数据。当播放器读取数据时,实时执行解压缩。与使用未压缩数据相比,场景或资产加载可能更快或更慢,具体取决于磁盘读取速度。
压缩数据文件包括:
1。播放器设置 - globalgamemanagers和globalgamemanagers.assets文件。
2.场景和资产 - 级别*和共享集* .asset文件。
3.资源 - resources.assets文件。
4. GI数据。
5.内置资源 - unity_builtin_extra文件。*/
BuildOptions.CompressWithLz4

//在构建播放器时使用基于块的LZ4高压缩。
BuildOptions.CompressWithLz4HC

//如果在其中报告任何错误,则不允许构建成功。
/*如果没有此标志,非致命错误(例如无法为特定平台编译着色器)将不会导致构建失败,但可能会导致运行时出现错误行为。*/
BuildOptions.StrictMode

//构建将包括用于测试的程序集。
BuildOptions.IncludeTestAssemblies

//将强制buildGUID全部为零。
BuildOptions.NoUniqueIdentifier
//同时在选择平台时也可以根据如下函数自动获取
Platform.GetPlatformFolder(EditorUserBuildSettings.activeBuildTarget)

AsseteBundle构建选项,枚举类型:BuildAssetBundleOptions
测试如下
测试
文件
对两个预设提和一个材质球打包,这两个预设提共用一个材质球

//无需任何特殊选项即可构建assetBundle。
BuildAssetBundleOptions.None

在这里插入图片描述

//创建资产包时不要压缩数据。
//这使得构建和加载更快,但由于它要大得多,下载时间会更长。
BuildAssetBundleOptions.UncompressedAssetBundle
在这里插入图片描述

//不要在AssetBundle中包含类型信息。
//指定此标志将使AssetBundle易受脚本或Unity版本更改的影响,但会使文件更小,加载速度更快。
//构建BuildTarget.WebPlayer时指定此标志,Unity将拒绝构建AssetBundle。
BuildAssetBundleOptions.DisableWriteTypeTree
在这里插入图片描述

//使用存储在资产包中的对象的id的哈希构建资产包。
BuildAssetBundleOptions.DeterministicAssetBundle
在这里插入图片描述
//强制重建assetBundles。
//这允许您重建assetBundle,即使所包含的资产都没有更改。
BuildAssetBundleOptions.ForceRebuildAssetBundle
在这里插入图片描述

//执行增量构建检查时忽略类型树更改。
//这允许您在执行增量构建检查时忽略类型树更改。
//设置此标志后,如果包含的资产未更改但类型树已更改,则不会重建目标assetBundle。
BuildAssetBundleOptions.IgnoreTypeTreeChanges
在这里插入图片描述

//将哈希附加到assetBundle名称。
//这允许您将哈希附加到assetBundle名称。
BuildAssetBundleOptions.AppendHashToAssetBundleName

在这里插入图片描述

//创建AssetBundle时使用基于块的LZ4压缩。
//这允许在从AssetBundle读取数据时进行实时解压缩。
//使用此选项创建的AssetBundles在下载后以压缩形式存储(在磁盘缓存或内存中)。
BuildAssetBundleOptions.ChunkBasedCompression
在这里插入图片描述

//如果在其中报告任何错误,则不允许构建成功。
//如果没有此标志,非致命错误(例如无法为特定平台编译着色器)将不会导致构建失败,
//但可能会导致运行时出现错误行为。
BuildAssetBundleOptions.StrictMode
在这里插入图片描述

//这允许您为AssetBundles执行干运行构建,但不实际构建它们。
//启用此选项后,BuildPipeline.BuildAssetBundles仍会返回包含有效AssetBundle依赖项和哈希值的AssetBundleManifest对象。
BuildAssetBundleOptions.DryRunBuild

//按文件名禁用Asset Bundle LoadAsset。
/默认情况下,Asset Bundles有三种方法可以查找同一资产:完整资产路径,资产文件名和带扩展名的资产文件名。
完整路径序列化为资产包,而从文件加载资产包时会生成带扩展名的文件名和文件名。
示例:“Assets / Prefabs / Player.prefab”,“Player”和“Player.prefab”
此选项将在资产包上设置一个标志,以防止创建资产文件名查找。
此选项可为资产包保存运行时内存和加载性能。*/
BuildAssetBundleOptions.DisableLoadAssetByFileName
在这里插入图片描述

//通过带扩展名的文件名禁用Asset Bundle LoadAsset。
/默认情况下,Asset Bundles有三种方法可以查找同一资产:完整资产路径,资产文件名和带扩展名的资产文件名。完整路径序列化为资产包,而从文件加载资产包时会生成带扩展名的文件名和文件名。
示例:“Assets / Prefabs / Player.prefab”,“Player”和“Player.prefab”
此选项将在资产包上设置一个标志,以防止使用扩展名查找创建资产文件名。此选项可为资产包保存运行时内存和加载性能。
/
BuildAssetBundleOptions.DisableLoadAssetByFileNameWithExtension
在这里插入图片描述

从以上数据中可以看出:使用BuildAssetBundleOptions.DisableWriteTypeTree压缩方式会使得文件最小,
而使用 BuildAssetBundleOptions.UncompressedAssetBundle压缩方式则会使文件最大,但是同时 BuildAssetBundleOptions.UncompressedAssetBundle因为没有对文件进行压缩,所以加载速度也是最快的

》BuildAssetBundleOptions.None:需要构建的AssetBundle没有任何特殊选项,压缩格式便是LZMA;
》BuildAssetBundleOptions.UncompressedAssetBundle,构建的AssetBundle不进行任何压缩,这种类型构建/解压都很快,但是AssetBundle会比较大。
》BuildAssetBundleOptions.ChunkBasedCompression,LZ4压缩,算法基于Chunk,解压缩时间相对就要断,AssetBundle比不压缩小但是比LZMA压缩方式要大。默认情况下,AssetBundle的标准压缩格式便是LZMA(LZMA是一种序列化流文件)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值