Unity 5.3 から「UnityEngine.Scripting.Preserve」が追加されました
Unityはビルド開始時にプロジェクト内の未使用のコードを削除しますが
例えばリフレクションを使用して呼び出している関数が存在する場合
その関数も削除されてしまう可能性があります
Preserve属性を関数に適用することで
ビルド開始時に削除されないようにすることができます
using System.Reflection; using UnityEngine; using UnityEngine.Scripting; public class ExampleClass { public static void Example() { var type = typeof( ExampleClass ); var attr = BindingFlags.NonPublic | BindingFlags.Static; type.GetMethod( "Log", attr ).Invoke( null, null ); } [Preserve] private static void Log() { Debug.Log( "ログ" ); } }