5次元配列をクラス変数として作成した所、Unity上では問題なく動くのにiPhone実機でエラーが発生。
クラス変数として5次元配列のデータを初期化した。
1 2 3 4 5 6 7 8 |
public class HogeHoge : MonoBehaviour { int[,,,,] _dataArray = { : : }; : : |
Unity上では問題なく動作したが、iOS向けにビルドしてXcodeから実機で動かすとエラーが発生。
ExecutionEngineException: Attempting to JIT compile method …
5次元配列の値を参照しているところで上記のようなエラーが発生し動作が停止した。
Googleで検索したところ、UnityAnswersに気になる投稿を2つ発見。
“ExecutionEngineException: Attempting to JIT compile method” when Marshal.PtrToStructure function operating on iphone
http://answers.unity3d.com/questions/250803/executionengineexception-attempting-to-jit-compile.html
Why doesn’t Unity iPhone support 4D arrays?
http://answers.unity3d.com/questions/297051/why-doesnt-unity-iphone-support-4d-arrays.html
多次元配列を使うことに問題がありそうなので、配列のインデックスをフラット化して2次元配列に変換。
1 2 3 4 5 6 7 8 |
public class HogeHoge : MonoBehaviour { int[,] _dataArray = { : : }; : : |
iPhone実機でも問題なく動作すするようになりました。
根本的な原因は分かりませんが、多次元配列は3次元程度までにしておいたほうが良いのかも…