既知の問題(3.7.3)


過去バージョンの不具合についてのアーカイブです。

もし、再発していましたら不具合フォーラムにご報告お願いいたします。

Arbor3.7.3

IL2CPPビルドでランタイム実行中にExecutionEngineExceptionが発生する。

事前コンパイルによってジェネリック型やジェネリックメソッドのコードが除外されてしまい例外が発生する不具合。

ステータス: 3.7.4にて修正済み。

Listで発生していた問題については一部仕様となりました。
詳しくは 事前コンパイル(AOT)での制限 を参照してください。

暫定対処方法

DynamicUtiltiyで発生している場合

Listのデータフローで発生している場合

  • Assets/Plugins/Arbor/Internal/Scripts/List/ListAccessor.csを開く。
  • 371行目を以下のように変更する。
    public sealed class ListAccessorInternal<T> : ListAccessor
    
  • Assets/ScriptsフォルダなどにAOTCodeGeneration.csファイルを作成。
  • 以下のようなコードを記入。
    using UnityEngine;
    using UnityEngine.Scripting;
    using Arbor;
    
    [Preserve]
    public class AOTCodeGeneration
    {
    	public class AOTList<T>
    	{
    		public ListAccessorInternal<T> accessor = null;
    		public ListParameterBase<T> parameter = null;
    	}
    
    	public AOTList<Vector3> vectorList = new AOTList<Vector3>();
    	// 以下、例外が発生している型全て
    }
    

補足

  • ListAccessorInternal, ListParameterBaseについてはArbor内部での対処方法を検証中。
  • ListなどArbor外のジェネリック型やジェネリックメソッドについてはドキュメントに注意点などを記載予定。