コード例 #1
0
        public static unsafe IntPtr GetGcHandlePtrFromIl2CppObject(IntPtr pointer)
        {
            if (pointer == IntPtr.Zero)
            {
                throw new NullReferenceException();
            }
            var objectKlass           = (Il2CppClass *)IL2CPP.il2cpp_object_get_class(pointer);
            var targetGcHandlePointer = IntPtr.Add(pointer, (int)UnityVersionHandler.Wrap(objectKlass).InstanceSize - IntPtr.Size);
            var gcHandle = *(IntPtr *)targetGcHandlePointer;

            return(gcHandle);
        }
コード例 #2
0
        internal static unsafe InjectedClassData *GetInjectedData(IntPtr objectPointer)
        {
            Il2CppClass *pObjectClass = (Il2CppClass *)IL2CPP.il2cpp_object_get_class(objectPointer);

            return((InjectedClassData *)(objectPointer + (int)UnityVersionHandler.Wrap(pObjectClass).InstanceSize - sizeof(InjectedClassData)).ToPointer());
        }