Запуск некоторых частей скрипта в редакторе

#unity3d

#unity-game-engine

Вопрос:

Итак, проблема в том, что у меня в скрипте есть одна общедоступная переменная, и когда эта переменная изменяется, я хочу вызвать определенную функцию, но только в режиме редактирования и только когда я нахожусь в редакторе Unity. ExecuteInEditMode заставит весь скрипт запускаться в режиме редактирования, когда мне понадобится одна маленькая функция. Прямо сейчас я использую отдельный компонент скрипта с этим кодом:

 using UnityEngine;
using UnityEditor;

[ExecuteInEditMode]
public class OtherScript: MonoBehaviour
{
    private ThatBigScript that_script;
    private float last_variable_value = 0.0f;

    void Update()
    {
        if(Application.isEditor amp;amp; !EditorApplication.isPlaying)
        {
            if(that_script == null)
            {
                that_script = GetComponent<ThatBigScript >();
            }

            if(that_script.variable_to_check != last_variable_value )
            {
                that_script.FunctionToCall(that_script.variable_to_check );
                last_variable_value = that_script.variable_to_check ;
            }
        }
    }

}
  

Создание целого отдельного компонента для одной маленькой функции требует большой работы, поэтому, пожалуйста, не мог бы кто-нибудь помочь мне создать что-нибудь более красивое и короткое?

Ответ №1:

Этот API спасет вам жизнь: единоличное поведение.OnValidate

«Эта функция вызывается при загрузке скрипта или изменении значения в инспекторе (вызывается только в редакторе)».