public static object ChkAnyObject(this ILuaState self, int index, System.Type type) { object ret = null; if (type.IsEnum) { return(self.ChkEnumValue(index, type)); } if (type.IsSubclassOf(typeof(System.Delegate))) { // TODO return(null); } switch (type.FullName) { case "System.Byte": ret = (byte)self.ToInteger(index); break; case "System.SByte": ret = (sbyte)self.ToInteger(index); break; case "System.Int16": ret = (short)self.ToInteger(index); break; case "System.UInt16": ret = (ushort)self.ToInteger(index); break; case "System.Int32": ret = self.ToInteger(index); break; case "System.UInt32": ret = (uint)self.ToInteger(index); break; case "System.Int64": ret = long.Parse(self.ToString(index)); break; case "System.UInt64": ret = ulong.Parse(self.ToString(index)); break; case "UnityEngine.Vector2": ret = self.ToVector2(index); break; case "UnityEngine.Vector3": ret = self.ToVector3(index); break; case "UnityEngine.Quaternion": ret = self.ToQuaternion(index); break; case "UnityEngine.Color": ret = self.ToColor(index); break; case "TinyJSON.Variant": ret = self.ToJsonObj(index); break; default: ret = self.ChkUserData(index, type); break; } return(ret); }