我当时正在Unity3d中为iOS开发一款游戏,在构建完游戏并将其发送到设备后,我注意到安装的应用程序的实际大小非常大(“非常大”是指超过2GB,大声笑)。
我在流浪,为什么呢?因此,我创建了测试项目,创建了场景,并向其中添加了一张大小为2048x2048的图像。所以我得到了与此文件的项目:
使用以下设置导入了MySprite:
而且,我什至没有忘记取消选中覆盖iOS的此设置。因此,MySprite在未压缩状态下的大小为16 MB。很好。没有质量损失,每个像素32位。
然后,我创建了Xcode项目。并在数据文件夹文件sharedassets0.assets中找到了它,它的大小为16.1 MB!我进行了一些研究,发现由于MySprite,此文件很大。所以...我很困惑。一点点。然后,我从这个Xcode项目和解压冷game.ipa文件所做的ipa文件,并再次发现sharedassets0.assets该倩女幽魂TA-DA-DA 16.1 MB!
我不喜欢这种行为。为什么MySprite的物理大小为16 MB?我了解,在内存处于未压缩状态时,无论如何将占用16 MB。但是我想在设备上压缩文件并在运行时将其解压缩。因为我不喜欢大小为16 MB * 100的应用程序:)
因此,是否可以要求Unity3d在构建时压缩图像?
PS我正在使用OS X 10.9.3,Unity3d v.4.5。我有Unity3d Pro,但没有iOS Pro。
我找到了下一个解决方案。
我将需要物理处理的所有图像放入带有.bytes
扩展名的Resources文件夹中。然后我通过加载
var binImage = Resources.Load<TextAsset>(imagePathInResourcesFolder);
myTexture2D.LoadImage(binImage.bytes);
如果您需要Sprite,Texture2D
可以随时使用Sprite.Create()
function。
这对我有好处,因为我可以轻松加载图像并将其卸载以释放内存使用量。但是这种解决方案有很大的缺点。没有任何Unity3d扩展,我们将失去常规的Unity工作流程。真伤心 但这只是我发现有效的解决方案。
PS实际上,您可以使用WWW类加载图像。但是目前,我更喜欢使用Resources。
PPS记住Unity3d包含了它可以使用的所有内容,这些资源可以从Resources文件夹进入构建。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句