使用Unity 2017.4.33f1-Personal。
我正在尝试使用 Image.FromFile 方法在System.Drawing命名空间中加载一个Bitmap到GameObject的逻辑中。 请注意,我对保存这个bmp作为资产或类似的东西不感兴趣。 我只是想把它加载到RAM中,在那里我可以做一些计算。 我已经尝试了下面的方法。
var result = Image.FromFile(
AssetDatabase.GetAssetPath(mainImg)
) as Bitmap;
但我得到了以下错误
InvalidProgramException: Invalid IL code in System.Drawing.Image:FromFile (string): IL_0000: ret
顺便说一下,
mainImg
是指 Texture2D
资源AssetDatabase.GetAssetPath(mainImg)
决心 Assets/CustomPackages/SeededConstruction/PuzzleBuilder/Input/main.bmp
我还尝试了其他一些愚蠢的方法,包括获取绝对路径和用反斜线代替前进的斜杠,就像这样。
var result = Image.FromFile(
Directory.GetCurrentDirectory()
+ "\\"
+ AssetDatabase.GetAssetPath(mainTileset)
.Replace('/', '\\')
) as Bitmap;
在这种情况下,路径解析为 D:\_Projects\2dGenerator\PlatformGeneration\Assets\CustomPackages\SeededConstruction\PuzzleBuilder\Input\main.bmp
. 然而,这将返回与上述相同的错误。
我在这里做错了什么? 看起来这种方法在普通的.Net应用程序中工作得很好,为什么在Unity中不行呢?
事实证明,这不是任何一种文件路径的问题。 为了在Unity 2017.4.33f1-Personal中正确引用System.Drawing,我采取了以下步骤。
mcs.rsp
到我的unity项目根Asset文件夹。 在文本编辑器中打开它,在第一行输入: -r:System.Drawing.dll
. 保存。