public static bool IsUnityEventHasError(UnityEngine.Events.UnityEventBase ev) { if (ev == null) { return(true); } var count = ev.GetPersistentEventCount(); for (var i = 0; i < count; i++) { var target = ev.GetPersistentTarget(i); if (target == null) { return(true); } var methodName = ev.GetPersistentMethodName(i); if (string.IsNullOrEmpty(methodName)) { return(true); } var type = target.GetType(); if (type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic) .All(m => m.Name != methodName)) { return(true); } } return(false); }
/// <summary> /// /// </summary> /// <param name="response"></param> /// <param name="index"></param> /// <returns>return one of the <seealso cref="ListenerValidionState"/></returns> public static ListenerValidionState ValidedResponse(UnityEngine.Events.UnityEventBase response, int index) { if (response.GetPersistentTarget(index) == null) { return(ListenerValidionState.MissingTarget); } if (string.IsNullOrEmpty(response.GetPersistentMethodName(index))) { return(ListenerValidionState.MissingMethod); } return(ListenerValidionState.Valid); }
static StackObject *GetPersistentMethodName_2(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj) { CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain; StackObject *ptr_of_this_method; StackObject *__ret = ILIntepreter.Minus(__esp, 2); ptr_of_this_method = ILIntepreter.Minus(__esp, 1); System.Int32 @index = ptr_of_this_method->Value; ptr_of_this_method = ILIntepreter.Minus(__esp, 2); UnityEngine.Events.UnityEventBase instance_of_this_method = (UnityEngine.Events.UnityEventBase) typeof(UnityEngine.Events.UnityEventBase).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); var result_of_this_method = instance_of_this_method.GetPersistentMethodName(@index); return(ILIntepreter.PushObject(__ret, __mStack, result_of_this_method)); }
static int _m_GetPersistentMethodName(RealStatePtr L) { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); UnityEngine.Events.UnityEventBase __cl_gen_to_be_invoked = (UnityEngine.Events.UnityEventBase)translator.FastGetCSObj(L, 1); try { { int index = LuaAPI.xlua_tointeger(L, 2); string __cl_gen_ret = __cl_gen_to_be_invoked.GetPersistentMethodName(index); LuaAPI.lua_pushstring(L, __cl_gen_ret); return(1); } } catch (System.Exception __gen_e) { return(LuaAPI.luaL_error(L, "c# exception:" + __gen_e)); } }