Unity使用IL2CPP构建IOS64位中System.Enum.IsDefined的问题
来源:互联网 发布:大数据应用于电力工程 编辑:程序博客网 时间:2024/06/06 01:58
System.Enum.IsDefined
今天突然想起来特地开通一下博客,只想记录自己在开发工程中所经历的各种问题,然后分享给大家!以便给更多人解决可能的困扰。
由于从2015年2月1日起,上传到App Store的IOS应用必须包含对64位系统的支持,并且必须使用Xcode6或更高版本中的ios8 SDK编译。
然后unity必然要支持iOS8, 最终选择了IL2CPP来支持iOS64位。
废话不多说,在移植游戏的工程中,unity打包出来的Xcode的工程,在不选择IL2CPP打包32位直至发布完全么有问题
但是要支持64位必然得选择IL2CPP打包,然后问题来了,因为在我的代码里有用到
System.Enum.IsDefined
然后基本涉及到这里的地方失灵了,在这种情况下不报任何错误,只有看日志
ArgumentException: The value parameter is not the correct type.It must be type String or the same type as the underlying typeof the Enum.
at <Module>.UnsupportedMember_String (System.Security.SecurityElement self, System.String signature) [0x00000] in <filename unknown>:0
at System.Enum.IsDefined (System.Type enumType, System.Object value) [0x00000] in <filename unknown>:0
at Invoker+Parameter.GetEnumParameter (System.String debugName, System.Type fallBackType) [0x00000] in <filename unknown>:0
at Invoker+Parameter.GetEnumParameter (System.String debugName) [0x00000] in <filename unknown>:0
at Invoker+Listener.InitialiseParameters (System.String invokerName) [0x00000] in <filename unknown>:0
at Invoker+Listener.Fire (System.String invokerName, Boolean debugEvent) [0x00000] in <filename unknown>:0
at Invoker.Fire (Boolean forceDebugEvent) [0x00000] in <filename unknown>:0
at BuildRestrictions+LocalPositionPerAspectRatio..ctor (AspectRatio _aspectRatio, Vector3 _localPosition) [0x00000] in <filename unknown>:0
at UIButton.FireEvent (.Invoker unityEvent) [0x00000] in <filename unknown>:0
at UIButton.OnInputUp (.UIElementInputData inputData) [0x00000] in <filename unknown>:0
at Replacements.Attribute.CheckParameters (System.Object element, System.Type attributeType) [0x00000] in <filename unknown>:0
at UnityEngine.Component.SendMessage (System.String methodName, System.Object value, SendMessageOptions options) [0x00000] in <filename unknown>:0
at UIElement.InputUp (.UIElementInputData inputData) [0x00000] in <filename unknown>:0
at UIElementManager.ActiveElementUpdate (.UIElement activeElement, .InputData inputData) [0x00000] in <filename unknown>:0
at UIElementManager.Update () [0x00000] in <filename unknown>:0
at Replacements.Attribute.CheckParameters (System.Object element, System.Type attributeType) [0x00000] in <filename unknown>:0
Replacements.Attribute:CheckParameters(Object, Type)
UnityEngine.Component:SendMessage(String, Object, SendMessageOptions)
UIElement:InputUp(UIElementInputData)
UIElementManager:ActiveElementUpdate(UIElement, InputData)
UIElementManager:Update()
Replacements.Attribute:CheckParameters(Object, Type)
(Filename: currently not available on il2cpp Line: 4294967295)
后来发现是System.Enum.IsDefined的问题,果断找到原因改正
if(System.Enum.IsDefined( enumType, intParameter ))
{}修改为
if(IsEnumDefined( enumType, intParameter ))
{}bool IsEnumDefined( System.Type enumType, int value )
{
System.Enum enumValue = (System.Enum)System.Enum.ToObject( enumType, value );
System.Type underlyingType = System.Enum.GetUnderlyingType(enumType);
object checkValue = System.Convert.ChangeType(enumValue, underlyingType);
return ((int)checkValue) == value;
}
问题解决!
- Unity使用IL2CPP构建IOS64位中System.Enum.IsDefined的问题
- Enum.IsDefined 方法
- Unity IL2CPP Bug : IL2CPP error for method 'System.Void <PrivateImplementationDetails>::.ctor()'
- Unity调用WebService的方法,支持IL2CPP
- isdefined的一个妙用。
- Unity 5.0 IL2CPP
- unity之IL2CPP
- [NSIndexPath indexPathForRow:row inSection:section]在iPhone 5S 的iOS64位运行错误
- IL2CPP上篇 Unity将来时:IL2CPP是什么?
- unity3D:IL2CPP 内部构建 – 生成代码的调试技巧
- Java中enum的使用
- java中enum的使用
- Java中Enum的使用
- C++中enum的使用
- JAVA中【enum】的使用
- Dlphi7中使用system单元的问题
- Unity使用过程中遇到的问题
- Unity将来时:IL2CPP是什么?
- spring factory-method
- [leetcode]Number of Islands
- service解析与应用
- Web meta 作用
- POJ 2983 (差分约束)
- Unity使用IL2CPP构建IOS64位中System.Enum.IsDefined的问题
- 使用CFStringTransform方便的进行中文名字的排序
- container_of用法
- 404 not found & java.lang.Exception: Socket bind failed: 730048
- 自守数
- WebLogic中配置给管理发送警告邮件 (视频)
- 软件开发和产品经理是怎么回事
- java 关于xml的注解,自动生成xml文件 - @XML***
- Proguard使用说明