【问题标题】:How load bitmap from disk in Unity?Unity如何从磁盘加载位图?
【发布时间】:2020-10-15 04:59:58
【问题描述】:

我想从磁盘加载位图。我在 System.Drawing 中使用 Bitmap 类,这使得它非常简单。

但是,当我部署到 macOS 时,出现异常。

DllNotFoundException:/Users/bokken/build/ouput/Unity-Technologies/mono/external/buildscripts/add_to_build_results/monodistribution/lib/libgdiplus.dylib

是否有一种简单的方法来加载不会产生此错误的位图,或者,我该如何解决此错误?

【问题讨论】:

  • 给出-1的人能说出原因吗?有什么不清楚的地方或者为什么它没有用?

标签: c# unity3d gdi+ system.drawing


【解决方案1】:

Unity 是跨平台的,但 C# .NET Framework 不是。

因此,为了让您的游戏跨平台,您要么使用其他跨平台库(在 Internet 上发布的某个地方),要么坚持使用 Unity 的功能。

Unity 提供了一个解决方法,例如 Texture2D 类。来自this thread的更多信息

【讨论】:

  • 我内部使用的是Texture2Ds,加载后的位图转换成Texture2D。我只需要从磁盘加载位图。
  • 位图只不过是一个字节数组,Texture2D 提供了加载它的机会。按照我发布的链接。 System.Drawing.Bitmap 类仅适用于 Windows
  • 我已经关注了该链接,但我完全不清楚如何将其应用于问题。
  • 是的,但是我如何将位图从磁盘加载到 Texture2D 中? GetPixels32() 在纹理有数据后使用。
  • 该链接用于加载 PNG 或 JPG,而不是位图。
【解决方案2】:

解决方案是使用自定义代码加载位图。

看到这里How can I use a .bmp file and create a Texture in Unity at runtime? 解决了这个问题。

请注意,接受的答案中的 BMPLoader 没有正确绘制镜像位图,并且可能应该彻底测试代码以发现其他可能的问题。

惊讶的 Unity 没有内置的功能来加载 PNG 和 JPG 之外的图像。

【讨论】:

    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2019-05-10
    相关资源
    最近更新 更多