unity3d减小安装包大小专题(4):剔除重复资源
2015-02-26 15:30
771 查看
如果你们美术不是很给力的话,是非常容易出现重复资源的情况。那么如果能剔除,当然是最好的了。
先看下无场景的情况下apk大小:61.4M(这里有一个小插曲,本来是74M的,后来发现有一个jpg竟然占了13兆,仔细看了下发现是贴图采用了真彩色无压缩,所以还是使用压缩的先).
然后加上所有场景文件,重新打包一个apk,大小变成:153M。
然后用软件Duplicate Cleaner Free查看下重复文件。
253个重复文件。
那么接下来才是重点,怎么剔除呢,直接删掉肯定不行,因为引用这个文件的所有地方都会出错。那么就要按照下面的操作:
选择一个原始模型,打开其他重复模型场景,将所有的模型改成原始模型,然后删除重复模型,确认后将原始模型拖入common。
替换fbx比较麻烦,要一个个替换,但图片就相对简单了,只要直接设置就可以了。
替换fbx的方法:先找到原始fbx,然后替换材质,可以先拖一个正确的到场景中,全部设置材质后,在break掉和prefab的关系,就不会红色了。
然后比较恶心的是有些fbx替换后直接消失了,也没有红色的提示,这个就只能看你自己先截一张老的场景的图,然后和新的比较。
public class FindMissing:ScriptableObject
{
[MenuItem("Tools/FindMissing")]
static void FindMissingMaterial()
{
Transform[] transforms = Selection.GetTransforms (SelectionMode.TopLevel | SelectionMode.OnlyUserModifiable);
foreach(Transform transform in transforms)
{
MeshFilter mesh = transform.GetComponent<MeshFilter>();
if(mesh != null && mesh.sharedMesh == null)
{
mesh.gameObject.SetActive(false);
}
}
}
}
这个脚本可以把有问题的active设置为false.
这个脚本我怕弄不回来,就暂时不管了。
然后这真心是一个体力活,诶,下次一定要和美术说好规范。
我搞了一下午,还剩150个重复项,主要的问题还是因为我们场景确实很多,接近40个。
明天继续吧。
又搞了一天,总算弄好了,不知道有没有漏掉的,不过没有关系,以后可以查漏补缺。看看新的apk大小吧:129M
减少了20+M,算是不错的成果了。
先看下无场景的情况下apk大小:61.4M(这里有一个小插曲,本来是74M的,后来发现有一个jpg竟然占了13兆,仔细看了下发现是贴图采用了真彩色无压缩,所以还是使用压缩的先).
然后加上所有场景文件,重新打包一个apk,大小变成:153M。
然后用软件Duplicate Cleaner Free查看下重复文件。
253个重复文件。
那么接下来才是重点,怎么剔除呢,直接删掉肯定不行,因为引用这个文件的所有地方都会出错。那么就要按照下面的操作:
选择一个原始模型,打开其他重复模型场景,将所有的模型改成原始模型,然后删除重复模型,确认后将原始模型拖入common。
替换fbx比较麻烦,要一个个替换,但图片就相对简单了,只要直接设置就可以了。
替换fbx的方法:先找到原始fbx,然后替换材质,可以先拖一个正确的到场景中,全部设置材质后,在break掉和prefab的关系,就不会红色了。
然后比较恶心的是有些fbx替换后直接消失了,也没有红色的提示,这个就只能看你自己先截一张老的场景的图,然后和新的比较。
public class FindMissing:ScriptableObject
{
[MenuItem("Tools/FindMissing")]
static void FindMissingMaterial()
{
Transform[] transforms = Selection.GetTransforms (SelectionMode.TopLevel | SelectionMode.OnlyUserModifiable);
foreach(Transform transform in transforms)
{
MeshFilter mesh = transform.GetComponent<MeshFilter>();
if(mesh != null && mesh.sharedMesh == null)
{
mesh.gameObject.SetActive(false);
}
}
}
}
这个脚本可以把有问题的active设置为false.
function CreateObject() { var newObj : GameObject = new GameObject(); newObj.transform.parent = target.transform; newObj.hideFlags = HideFlags.HideInHierarchy; }
这个脚本我怕弄不回来,就暂时不管了。
然后这真心是一个体力活,诶,下次一定要和美术说好规范。
我搞了一下午,还剩150个重复项,主要的问题还是因为我们场景确实很多,接近40个。
明天继续吧。
又搞了一天,总算弄好了,不知道有没有漏掉的,不过没有关系,以后可以查漏补缺。看看新的apk大小吧:129M
减少了20+M,算是不错的成果了。
相关文章推荐
- unity3d移动平台减小安装包大小专题三:压缩png
- unity3d移动平台减小安装包大小专题(5):共用动作文件
- unity3d移动平台减小安装包大小(2):重制图集
- unity3d移动平台减小安装包专题(1):分析打包的日志文件删除无用文件
- [Unity3D]使用link.xml来控制strippinglevel减少dll库大小技巧、优化安装包大小
- android 减小apk安装包大小方法及相关优化
- android 如何剔除apk里面用不到的资源文件,减少system img的大小?
- Unity3D之如何将包大小减少到极致 发表于2014年6月6日由陆泽西 Unity3D之如何将包大小减少到极致,图片是游戏app里最最占空间的资源,所以请各位还没有理解u3d对图片文件存储方式理解
- 如何减小ios安装包大小
- Unity3D之编辑器脚本获取资源内存和硬盘大小
- 减小游戏apk安装包大小
- Android 减小安装包大小(一)Lint
- Unity3D如何减少安装包大小
- Unity3D 使用link.xml来控制strippinglevel减少dll库大小技巧、优化安装包大小
- Unity导出ios工程如何减小运行内存、安装包(ipa)、以及安装后大小
- Unity3D如何减少安装包大小
- unity3d在线更新资源专题(6)
- Android 减小安装包大小(二) 利用 APK Analyzer 为应用“瘦身”
- Unity3D如何减少安装包大小
- 减小APK安装包大小