コガネブログ

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

【Unity】Unity 5.3 新機能「Preserve」

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( "ログ" );
    }
}

参考サイト様