コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
            }
        }