簡體   English   中英

使用 System.Drawing 在 Unity 中將 Bitmap 加載到 memory 中

[英]Load Bitmap into memory in Unity using System.Drawing

使用 Unity 2017.4.33f1-Personal。

我正在嘗試使用 System.Drawing 命名空間中的Image.FromFile方法在 GameObject 的邏輯中加載 Bitmap。 請注意,我對將此 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 但是,這會返回與上述相同的錯誤。

我在這里做錯了什么? 看起來這種方法在 normal.Net 應用程序中運行良好,為什么在 Unity 中不行呢?

事實證明這不是任何類型的文件路徑問題。 為了在 Unity 2017.4.33f1-Personal 中正確引用 System.Drawing,我采取了以下步驟:

  1. Go 編輯 -> 項目設置 -> 播放器。 將 API 兼容性級別從 .NET 2.0 子集更改為 .NET 2.0。
  2. mcs.rsp添加到我的統一項目根資產文件夾中。 在文本編輯器中打開它,在第一行輸入: -r:System.Drawing.dll 節省。
  3. 關閉並重新打開 Unity。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM