System.ExecutionEngineException: Method body is null.
问题
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32.dll")]
private static extern IntPtr GetActiveWindow();
private const int SW_MINIMIZE = 6;
#endif
Minimization.onClick.AddListener(() =>
{
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
try
{
IntPtr hWnd = GetActiveWindow();
if (hWnd != IntPtr.Zero)
{
ShowWindow(hWnd, SW_MINIMIZE);
}
}
catch (System.Exception e)
{
Debug.LogError($"窗口最小化失败: {e}");
}
#endif
});
在 Windows 平台调用最小化方法,报错:
窗口最小化失败:System.ExecutionEngineException: Method body is null.
原因
使用了 HybridCLR 热更新,在热更新代码中定义 extern 函数。
解决
把定义 extern 函数以及使用的部分抽出来放到 AOT 中类中。
上一篇: 几秒钟就充满电!科学
下一篇: 暂无数据