GetTypeFromUnityEngine() 정적인 개인적인 메소드

static private GetTypeFromUnityEngine ( string typeName ) : Type
typeName string
리턴 System.Type
예제 #1
0
        /// <summary>
        /// This API makes a call to a method on an Object by passing the specified parameters and returns an object of type AndroidJavaObject
        /// </summary>
        /// <param name="androidJavaObject"></param>
        /// <param name="methodName"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static object CallMethod(object androidJavaObject, string methodName, params object[] parameters)
        {
            Type androidJavaObjectType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject");
            var  method = androidJavaObject.GetType().GetMethods()
                          .Where(x => x.Name == "Call")
                          .First(x => x.ContainsGenericParameters);
            var genericMethod = method.MakeGenericMethod(androidJavaObjectType);

            return(genericMethod.Invoke(androidJavaObject, new object[] { methodName, parameters }));
        }
예제 #2
0
        public static object CallMethod(object androidJavaObject, string methodName, params object[] parameters)
        {
            Type typeFromUnityEngine = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject");

            return((from x in androidJavaObject.GetType().GetMethods()
                    where x.Name == "Call"
                    select x).First((MethodInfo x) => x.ContainsGenericParameters).MakeGenericMethod(typeFromUnityEngine).Invoke(androidJavaObject, new object[2]
            {
                methodName,
                parameters
            }));
        }
예제 #3
0
        /// <summary>
        /// The API makes a call to a static java method on a class and returns a typed parameter
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="className"></param>
        /// <param name="methodName"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static T CallStaticJavaMethod <T>(string className, string methodName, params object[] parameters)
        {
            Type androidJavaClassType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass");

            if (androidJavaClassType != null)
            {
                var javaUnityHelper  = Activator.CreateInstance(androidJavaClassType, className);
                var callStaticMethod = androidJavaClassType.GetMethods()
                                       .Where(x => x.Name == "CallStatic")
                                       .FirstOrDefault();
                if (callStaticMethod != null)
                {
                    return((T)callStaticMethod.Invoke(javaUnityHelper, new object[] { methodName, parameters }));
                }
            }
            return(default(T));
        }
예제 #4
0
        /// <summary>
        /// This API returns a value of type AndroidJavaObject from a static field
        /// </summary>
        /// <param name="className"></param>
        /// <param name="methodName"></param>
        /// <returns></returns>
        public static object GetStaticJavaField(string className, string methodName)
        {
            Type androidJavaClassType  = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass");
            Type androidJavaObjectType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject");

            if (androidJavaClassType != null)
            {
                var javaUnityHelper = Activator.CreateInstance(androidJavaClassType, className);
                var staticGetter    = androidJavaClassType.GetMethod("GetStatic");
                var genericGetter   = staticGetter.MakeGenericMethod(androidJavaObjectType);

                if (genericGetter != null)
                {
                    return(genericGetter.Invoke(javaUnityHelper, new object[] { methodName }));
                }
            }
            return(null);
        }
예제 #5
0
        /// <summary>
        /// The API makes a call to a static java method on a class and returns an object of Type AndroidJavaObject
        /// </summary>
        /// <param name="className"></param>
        /// <param name="methodName"></param>
        /// <returns></returns>
        public static object GetJavaObjectStatically(string className, string methodName)
        {
            Type androidJavaClassType  = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass");
            Type androidJavaObjectType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject");

            if (androidJavaClassType != null)
            {
                var javaClass        = Activator.CreateInstance(androidJavaClassType, className);
                var callStaticMethod = androidJavaClassType.GetMethods()
                                       .Where(x => x.Name == "CallStatic")
                                       .First(x => x.ContainsGenericParameters);

                var genericStaticMethod = callStaticMethod.MakeGenericMethod(androidJavaObjectType);

                return(genericStaticMethod.Invoke(javaClass, new object[] { methodName, new object[] { } }));
            }
            return(null);
        }
예제 #6
0
        public static T GetStaticJavaField <T>(string className, string methodName)
        {
            Type typeFromUnityEngine = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass");

            if (typeFromUnityEngine != null)
            {
                object     obj        = Activator.CreateInstance(typeFromUnityEngine, className);
                MethodInfo methodInfo = typeFromUnityEngine.GetMethod("GetStatic").MakeGenericMethod(typeof(T));
                if (methodInfo != null)
                {
                    return((T)methodInfo.Invoke(obj, new object[1]
                    {
                        methodName
                    }));
                }
            }
            return(default(T));
        }
예제 #7
0
        public static object GetJavaObjectStatically(string className, string methodName)
        {
            Type typeFromUnityEngine  = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass");
            Type typeFromUnityEngine2 = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject");

            if (typeFromUnityEngine != null)
            {
                object obj = Activator.CreateInstance(typeFromUnityEngine, className);
                return((from x in typeFromUnityEngine.GetMethods()
                        where x.Name == "CallStatic"
                        select x).First((MethodInfo x) => x.ContainsGenericParameters).MakeGenericMethod(typeFromUnityEngine2).Invoke(obj, new object[2]
                {
                    methodName,
                    new object[0]
                }));
            }
            return(null);
        }
예제 #8
0
        public static T CallStaticJavaMethod <T>(string className, string methodName, params object[] parameters)
        {
            Type typeFromUnityEngine = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass");

            if (typeFromUnityEngine != null)
            {
                object     obj        = Activator.CreateInstance(typeFromUnityEngine, className);
                MethodInfo methodInfo = (from x in typeFromUnityEngine.GetMethods()
                                         where x.Name == "CallStatic"
                                         select x).FirstOrDefault();
                if (methodInfo != null)
                {
                    return((T)methodInfo.Invoke(obj, new object[2]
                    {
                        methodName,
                        parameters
                    }));
                }
            }
            return(default(T));
        }