Unity SBP打包与传统打包,Atlas(spriteatlasv2)的差异
2025/11
20
09:11
传统打包会剔除 默认引用资产
以下打包没有问题
[MenuItem("Tools/PackAssetbundle")]
public static void Start()
{
AssetBundleBuild[] builds = new AssetBundleBuild[1];
builds[0].assetBundleName = "TestAssetBundle";
builds[0].assetNames = new string[]
{
"Assets/ab/atlas/1.png",
"Assets/ab/atlas/2.png",
"Assets/ab/atlas/3.png",
"Assets/ab/atlas/4.png",
"Assets/ab/index/atlas.spriteatlasv2",
};
BuildAssetBundleOptions opt = BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.DeterministicAssetBundle;
BuildTarget target = BuildTarget.WebGL;
BuildPipeline.BuildAssetBundles("Assets/StreamingAssets/", builds, opt, target);
}
这样打包也没问题
builds[0].assetNames = new string[]
{
"Assets/ab/index/atlas.spriteatlasv2",
};
SBP打包会全量打包输入的资产

这样打包没有问题
[MenuItem("Tools/PackAssetbundle")]
public static void Start()
{
AssetBundleBuild[] builds = new AssetBundleBuild[1];
builds[0].assetBundleName = "TestAssetBundle";
builds[0].assetNames = new string[]
{
"Assets/ab/index/atlas.spriteatlasv2",
};
BuildAssetBundleOptions opt = BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.DeterministicAssetBundle;
BuildTarget target = BuildTarget.WebGL;
UnityEditor.Build.Pipeline.CompatibilityBuildPipeline.BuildAssetBundles("Assets/StreamingAssets/", builds, opt, target);
}
这样打包会有问题,会有冗余Texture打到Atlas包中
builds[0].assetNames = new string[]
{
"Assets/ab/atlas/1.png",
"Assets/ab/atlas/2.png",
"Assets/ab/atlas/3.png",
"Assets/ab/atlas/4.png",
"Assets/ab/index/atlas.spriteatlasv2",
};

总结
使用SBP打Atlas文件,不要输入原始图集文件,只输入spriteatlasv2即可
否则会有大量冗余的Texturte2D资产被打到AB中,导致文件增加1倍
这在WebGL中问题很大
CopyRights: The Post by BY-NC-SA For Authorization,Original If Not Noted,Reprint Please Indicate From 老刘@开发笔记
Post Link: Unity SBP打包与传统打包,Atlas(spriteatlasv2)的差异
Post Link: Unity SBP打包与传统打包,Atlas(spriteatlasv2)的差异