【问题标题】:Physical size of imported sprites in Unity3dUnity3d中导入精灵的物理尺寸
【发布时间】:2014-06-30 15:51:17
【问题描述】:

我在 Unity3d 中为 iOS 开发游戏,在构建我的游戏并将其发送到设备后,我注意到安装的应用程序的实际大小非常大(我的意思是非常大的大小超过 2GB,哈哈)。

我在徘徊,为什么会这样?所以我创建了测试项目,创建了场景并添加了一张大小为 2048x2048 的图像。所以我得到了这个文件的项目:

  • 我的精灵
  • 我的场景

MySprite 是使用以下设置导入的:

  • 纹理类型:精灵
  • 精灵模式:单人
  • 像素到单位:100
  • 过滤模式:点
  • 最大尺寸:2048
  • 格式:真彩色

我什至没有忘记取消选中覆盖 iOS 的此设置。因此,MySprite 在未压缩状态下的大小为 16 MB。很好。没有质量损失,每像素 32 位。

然后我创建了 Xcode 项目。并在 ta-da-da 16.1 MB 的数据文件夹文件 sharedassets0.assets 中找到!我做了一些研究,发现这个文件很大,因为 MySprite。所以...我很困惑。一点点。然后我从这个 Xcode 项目中创建了 ipa 文件并解压缩了 cool-game.ipa 文件,并再次找到了 ta-da-da 16.1 MB 的 sharedassets0.assets

我不喜欢这种行为。为什么 MySprite 的物理大小为 16 MB?我知道,在内存中的未压缩状态下,无论如何它都需要 16 MB。但我想在设备上压缩文件并在运行时解压缩它。因为我不喜欢大小 = 16 MB * 100 的应用程序 :)

那么,是否可以让 Unity3d 在构建时压缩图像?

P。 S. 我正在使用 OS X 10.9.3,Unity3d v.4.5。我有 Unity3d Pro,但没有 iOS Pro。

【问题讨论】:

    标签: ios unity3d


    【解决方案1】:

    我找到了下一个解决方案。

    我将我需要的所有图像都放在具有.bytes 扩展名的资源文件夹中。然后我通过

    加载它们
    var binImage = Resources.Load<TextAsset>(imagePathInResourcesFolder);
    myTexture2D.LoadImage(binImage.bytes);
    

    如果您需要来自Texture2D 的 Sprite,您可以随时使用 Sprite.Create() 函数。

    这对我有好处,因为我可以轻松加载图像并卸载它们以释放内存使用。但是这种解决方案有很大的缺点。如果没有任何 Unity3d 扩展,我们就会失去通常的 Unity 工作流程。这很可悲。但这是我发现唯一可行的解​​决方案。

    P。 S. 实际上你可以使用 WWW 类来加载图像。但目前我更喜欢与 Resources 合作。

    P。 P.S. 请记住,Unity3d 将其可以使用的所有内容从 Resources 文件夹包含到构建中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 2021-03-24
      相关资源
      最近更新 更多