我正在为Unity3d中的iOS游戏工作,在构建我的游戏并将其发送到设备后,我发现安装的应用程序的实际大小非常大(非常大,我的意思是大小超过2GB,大声笑)。
我在徘徊,为什么呢?所以我创建了测试项目,创建了场景并添加了一个大小为2048x2048的图像。所以我得到了这个文件的项目:
使用以下设置导入MySprite:
我甚至没有忘记取消选中覆盖iOS的此设置。因此,MySprite在未压缩状态下的大小为16 MB。很好。没有质量损失,每像素32位。
然后我创建了Xcode项目。并且在数据文件夹 sharedassets0.assets 中找到了 ta-da-da 16.1 MB!我做了一些研究,发现这个文件很大,因为MySprite。所以...我很困惑。一点点。然后我从这个Xcode项目中创建了ipa文件,并解压缩了cool-game.ipa文件,并再次找到了 sharedassets0.assets ,其中包含 ta-da-da 16.1 MB!
我不喜欢这种行为。为什么MySprite的物理尺寸为16 MB?我明白,在内存中的未压缩状态下,无论如何都需要16 MB。但我想在设备上压缩文件并在运行时解压缩它。因为我不喜欢大小= 16 MB * 100的应用程序:)
那么,是否有可能要求Unity3d在构建时压缩图像?
P上。 S.我使用的是OS X 10.9.3,Unity3d v.4.5。我有Unity3d Pro,但不是iOS Pro。
答案 0 :(得分:0)
我找到了下一个解决方案。
我将物理上需要的所有图像放到具有.bytes
扩展名的Resources文件夹中。然后我通过
var binImage = Resources.Load<TextAsset>(imagePathInResourcesFolder);
myTexture2D.LoadImage(binImage.bytes);
如果你需要来自Texture2D
的精灵,你可以随时使用Sprite.Create()
功能。
这对我很好,因为我可以轻松加载图像并卸载它们以释放内存使用量。但这种解决方案有很大的缺点。如果没有任何Unity3d扩展,我们将失去通常的Unity工作流那很难过。但这是我找到工作的唯一解决方案。
P上。 S.实际上你可以使用WWW类来加载图像。但目前我更喜欢使用Resources。
P上。 P. S.记得Unity3d包含它可以使用的所有资源从Resources文件夹到构建。