Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Unity中从磁盘加载位图?_C#_Unity3d_Gdi+_System.drawing - Fatal编程技术网

C# 如何在Unity中从磁盘加载位图?

C# 如何在Unity中从磁盘加载位图?,c#,unity3d,gdi+,system.drawing,C#,Unity3d,Gdi+,System.drawing,我想从磁盘加载位图。我正在System.Drawing中使用位图类,这使它非常简单 然而,当我部署到macOS时,我得到了一个异常 DllNotFoundException:/Users/bokken/build/output/Unity Technologies/mono/external/buildscripts/add_to_build_results/monodribution/lib/libgdiplus.dylib 有没有一种简单的方法可以加载不会产生此错误的位图,或者,如何修复此错

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

然而,当我部署到macOS时,我得到了一个异常

DllNotFoundException:/Users/bokken/build/output/Unity Technologies/mono/external/buildscripts/add_to_build_results/monodribution/lib/libgdiplus.dylib


有没有一种简单的方法可以加载不会产生此错误的位图,或者,如何修复此错误?

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

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


例如,Unity提供了一个
Texture2D
类,可以作为一种变通方法。更多信息请参见

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

看看这里哪个解决了这个问题

请注意,已接受答案中的BMPLoader没有正确绘制镜像位图,可能应该彻底测试代码是否存在其他可能的问题


令人惊讶的是,Unity没有内置功能来加载PNG和JPG以外的图像。

我在内部使用Texture2D,加载后的位图将转换为Texture2D。我只需要从磁盘加载位图。位图只是一个字节数组,Texture2D提供了加载它的机会。跟随我发布的链接
System.Drawing.Bitmap
类仅适用于Windows我已经遵循了链接,但我不清楚如何将其应用于该问题。除非您在Windows上,否则无法生成
System.Drawing.Bitmap
。您可以使用Unity的
Texture2D.GetPixels32
来获取本质上是位图的
Color32[]
(数据结构,而不是
System.Drawing.bitmap
)。您可以根据需要使用此数组(将其转换为另一个对象或
字节[]
或其他任何对象。是的,但如何从磁盘将位图加载到纹理2D?一旦纹理具有数据,就会使用GetPixels32()。谁能给出-1说明原因?对此有什么不清楚的地方,或者为什么它没有用处?