Exception:
ExecutionEngineException: Attempting to JIT compile method '(wrapper delegate-invoke) System.Reflection.MonoProperty/Getter`2<UnityEngine.Object, string>:invoke_string__this___Object (UnityEngine.Object)' while running with --aot-only.
at System.Reflection.MonoProperty.GetterAdapterFrame[Object,String] (System.Reflection.Getter`2 getter, System.Object obj) [0x00000] in <filename unknown>:0
at System.Reflection.MonoProperty.GetValue (System.Object obj, System.Object[] index) [0x00000] in <filename unknown>:0
at HutongGames.PlayMaker.ReflectionUtils.GetMemberValue (System.Reflection.MemberInfo member, System.Object target) [0x00000] in <filename unknown>:0
at HutongGames.PlayMaker.ReflectionUtils.GetMemberValue (System.Reflection.MemberInfo[] memberInfo, System.Object target) [0x00000] in <filename unknown>:0
at HutongGames.PlayMaker.FsmProperty.GetValue () [0x00000] in <filename unknown>:0
at HutongGames.PlayMaker.Actions.GetProperty.OnUpdate () [0x00000] in /Users/alex/Unity/Test/Assets/PlayMaker/Actions/GetProperty.cs:34
at HutongGames.PlayMaker.FsmState.OnUpdate () [0x00000] in <filename unknown>:0
at HutongGames.PlayMaker.Fsm.UpdateState (HutongGames.PlayMaker.FsmState state) [0x00000] in <filename unknown>:0
at HutongGames.PlayMaker.Fsm.Update () [0x00000] in <filename unknown>:0
at PlayMakerFSM.Update () [0x00000] in <filename unknown>:0
(Filename: /Users/alex/Unity/Test/Assets/PlayMaker/Actions/GetProperty.cs Line: 34)
Reproduce:
1. Add a FSM to any GameObject, attach a GetProperty action to it.
2. In build settings, use iOS platform and check script debugging.
3. Switch API-Compatibility-Level to .NET 2.0 (not subset) and SDK version to DeviceSDK in Player Settings.
4. Now, build & run, we can see compile exceptions of GetProperty keep throwing in XCode. In real game, this exception will stop playMaker from whatever it should do.
Discussion:
http://hutonggames.com/playmakerforum/index.php?topic=6209.0http://hutonggames.com/playmakerforum/index.php?topic=6026.0Solution:
It seems the only way out is use .NET2 subset instead for now. But others assets may have to use full .NET2, then conflict comes.