コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】「Ran out of trampolines of type 2」で iOS アプリが強制終了する時の解決方法

エラー概要

Ran out of trampolines of type 2

Unity で iOS アプリをビルドして動作確認していた時に上記のエラーが出て
アプリが強制終了する現象に遭遇しました

https://github.com/unity3d-jp/unity-doc/blob/master/ja/TroubleShooting.txt
 
"Ran out of trampolines of type 0/1/2" ランタイムエラー
このエラーは通常、再帰的なジェネリックをたくさん使用するときに発生します。
AOTコンパイラに指示をして、より多くのtype0, type 1 または type 2 の
トランポリンを割り当てることが出来ます。
追加の AOT コンパイラ コマンドライン オプションは
Player Settings の "Other Settings" セクションで指定できます。
type 1 のトランポリンについては、 nrgctx-trampolines=ABCD
ここではABCDは新しく必要なトランポリンの数(すなわち 4096)、を指定してください。
type 2 のトランポリンについては nimt-trampolines=ABCD を指定してください。
type 0 のトランポリンについては、 ntrampolines=ABCD を指定してください。

調べてみたところ、再帰的なジェネリック関数をたくさん使用すると発生するとのことでした

解決方法

  1. Unityのメニューから「File>Build Settings...」を選択する
  2. 「Platform」で「iOS」を選択した状態で「Player Settings...」を選択する
  3. 「AOT Compilation Options」に下記の一行を入力する
ntrampolines=2048,nrgctx-trampolines=2048,nimt-trampolines=1024