HarmonyX
HarmonyX copied to clipboard
Cannot unpatch extern method patch
Hey! I'm using HarmonyX with unity (in editor directly), trying to patch & unpatch in play mode. After I call Harmony.UnpatchAll(); the methods still seems to be patched.
public class DestroyPatch
{
[HarmonyPostfix]
[HarmonyPatch(nameof(Object.Destroy), new Type[] { typeof(Object), typeof(float) })]
public static void PrefixA(Object obj, float t)
{
Debug.Log("Destroy(Object obj, float t) called");
}
[HarmonyPostfix]
[HarmonyPatch(nameof(Object.DestroyImmediate), new Type[] { typeof(Object), typeof(bool) })]
public static void PrefixB(Object obj, bool allowDestroyingAssets)
{
Debug.Log("DestroyImmediate(Object obj, bool allowDestroyingAssets) called");
}
}
Both are extern calls. I don't have issues with "normal" methods.
Looking into UnpatchConditional, it seems that HasMethodBody returns 0, and thus those methods are skipped and never unpatched.
Thanks!