DllNotFoundException: libgdiplus.dylib
System.Drawing.GDIPlus..cctor ()
TypeInitializationException
System.Drawing 依賴 GDI+ 原生庫。Windows 內建 gdiplus.dll,Mac/Linux 需安裝 libgdiplus(Mono 提供的 GDI+ 實現)。
# macOS (Homebrew)
brew install mono-libgdiplus
# 或
brew install libgdiplus
# 確認動態庫位置
find /usr/local -name "libgdiplus.dylib" 2>/dev/null
# 通常在 /usr/local/lib/libgdiplus.dylib
Unity 編輯器運行時會自動加載該路徑。若仍報錯,嘗試設置 DYLD_LIBRARY_PATH 或將 libgdiplus.dylib 複製到專案 Assets/Plugins。
Unity 提供純 managed 圖像 API,無需原生依賴:
// 原代碼 (僅 Windows)
Bitmap bitmap = (Bitmap)Bitmap.FromFile(path, false);
Color c = bitmap.GetPixel(x, y);
// Unity 跨平台寫法
byte[] bytes = System.IO.File.ReadAllBytes(path);
Texture2D tex = new Texture2D(2, 2);
tex.LoadImage(bytes); // 自動識別 PNG/JPG
Color c = tex.GetPixel(x, y);
// 使用完銷毀
Destroy(tex);
async/await + UnityWebRequestTexture 加載網絡圖片。System.Drawing 在 Unity 中**不受官方支持**,打包到 iOS/Android 會失敗。SkiaSharp (跨平台 2D 圖形庫) 或 ImageSharp (純 C#)。Mac 上 Unity 使用 System.Drawing.Bitmap 需安裝 libgdiplus,但**強烈建議改用 Unity 內建 Texture2D 或 SkiaSharp/ImageSharp 實現跨平台圖像處理**。