Unity WebGL System.DllNotFoundException (libproc) Hatası Çözümü

Unity WebGL System.DllNotFoundException (libproc) Hatası Çözümü

Unity System.DllNotFoundException (libproc) Hatası Çözümü

 Hepinize merhaba arkadaşlar Mac OS 12.3 ve sonrası işletim sistemlerinde Unity WebGL çıktısı alırken aşağıda bulunan

System.DllNotFoundException: Unable to load shared library 'libproc' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable: dlopen(liblibproc, 0x0001): tried: 'liblibproc' (no such file), '/usr/local/lib/liblibproc' (no such file)

hatası ile karşılaşıyordum ve bunun Mac OS un yeni sürümü ile ilgili olduğunu keşfettim, daha sonra yaptığım bir kaç araştırma sonucunda bunun projenize dahil edeceğiniz ufak bir script ile çözülebileceğini öğrendim.

Tabi bu scripti oluşturmadan önce bilgisayarınızda Pythonun kurulu olması gerekmektedir ve aşağıdaki kodu da sisteminizde kurulu olan Python sürümüne göre değiştirmeyi ve düzenlemeyi unutmamalısınız.

Scriptimiz

#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;
 
public class PreBuildProcessing : IPreprocessBuildWithReport
{
    public int callbackOrder => 1;
    public void OnPreprocessBuild(BuildReport report)
    {
        System.Environment.SetEnvironmentVariable("EMSDK_PYTHON", "/Library/Frameworks/Python.framework/Versions/3.10/bin/python3");
    }
}
#endif

Yukarıdaki her koşulu sağlayıp hala hata alıyorsanız Python EMSDK kurulu olmayabilir, Python EMSDK yı kurup tekrar çıktı almayı deneyin, eğer hala hata almaya devam ederseniz aşağıdan bana yorum olarak sorabilirsiniz.

Not : Yukarıdaki çözüm scripti Mac için verilmiştir ancak scripti Windows/Linux da bulunan Python konumu ile değiştirip çözüm için kullanabilirsiniz.

Çözüm Mantığı

Yukarıdaki çözümün neden çalıştığını anlatacak olursam, aslında hata Unitynin kendi WebAssembly derleyicisini bulamamasından kaynaklanıyor ve biz de buradaki çözüm yöntemimiz ile Python da bulunan WebAssembly yi kullanarak çözüyoruz.