Почему сценарии редактора должны быть помещены в папку редактора

#unity3d

Вопрос:

Я только что создал свой собственный редактор в unity.

 public class ShapeEditor : Editor
{
    private void OnSceneGUI()
    {
       // Done something
    }
}
 

Я не помещал его ни в одну папку редактора. Это просто где-то в рамках моего проекта.

Почему это работает? Что я получу, если помещу его в папку редактора? Почему я должен это делать?

Ответ №1:

Это работает в редакторе. Но если вы попытаетесь создать исполняемый файл или приложение с помощью этого кода, код редактора больше не будет работать (или даже компилироваться), потому что API редактора недоступны в версиях плеера.

Вот почему вам нужно поместить код, зависящий от API конкретного редактора, в папку редактора, чтобы Unity мог исключить его при создании версии плеера.

Комментарии:

1. Да, основная причина заключается в том, чтобы избежать ошибок компиляции, вызванных использованием API редактора во время сборки. Но иногда бывает удобно использовать код редактора внутри сценария выполнения. В этих случаях код редактора может быть обернут внутри #if UNITY_EDITOR #endif директив и. Код будет выполняться только в редакторе и автоматически будет удален из сборок.