コガネブログ

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

【Unity】Unity 2020.1 新機能 - スクリプトから Preset を適用する時にパラメータの除外を指定できるようになった

ソースコード

using UnityEditor.Presets;
using UnityEngine;

public static class PresetUtils
{
    public static bool ApplyToWithExclusion
    (
        Preset          preset,
        Object          target,
        params string[] excludedProperties
    )
    {
        var current = preset.excludedProperties;
        preset.excludedProperties = excludedProperties;
        var success = preset.ApplyTo( target );
        preset.excludedProperties = current;
        return success;
    }
}

ApplyTo を呼び出す前に excludedProperties プロパティに
除外したいパラメータの名前を指定できるようになった

使用例

using UnityEditor;
using UnityEditor.Presets;

public static class Example
{
    [MenuItem( "Tools/Hoge" )]
    private static void Hoge()
    {
        var path      = "Assets/Transform.preset";
        var preset    = AssetDatabase.LoadAssetAtPath<Preset>( path );
        var transform = Selection.activeTransform;

        PresetUtils.ApplyToWithExclusion
        (
            preset,
            transform,
            "m_LocalPosition.x",
            "m_LocalPosition.y",
            "m_LocalPosition.z"
        );
    }
}

関連記事