♻️

UnityのIL2CPPで式木使う方法メモ

2020/09/26に公開

環境

  • Unity2019.1.7f1

方法

以下の link.xmlAssets 直下に置く。

<linker>
  <assembly fullname="System.Core">
    <type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
  </assembly>
</linker>

簡単な式木なら Compile() 出来るようになります。(インタプリタで実行されます)

MakeGenericMethod 等使う場合は以下の記事の UsedOnlyForAOTCodeGeneration の例のように事前に生成しておいて下さい。
https://docs.unity3d.com/ja/2019.1/Manual/ScriptingRestrictions.html

Expression.Lambda する Delegate の引数や戻り値に値型があると厳しい。

Unity Test Runner の Play mode でいろいろ試せるので頑張って下さい。
https://docs.unity3d.com/ja/2019.1/Manual/testing-editortestsrunner.html

Discussion