Статьи:Расширение редактора (Часть 3)

Материал из Blitz3D to Unity3D Wiki Project
Перейти к: навигация, поиск

Сегодня хочу поделиться еще одним простым способом добавления собственных функций в редактор Unity, а именно использованию класса ScriptableWizard.

Так же как и в прошлый раз я реализую функцию LookAt, но с использованием других средств.

Итак разбираем код:

using UnityEditor;
using UnityEngine;

public class LookAtWizard : ScriptableWizard 
{
    // две публичные переменные, которые будут параметрами визарда
    public Transform source; // объект для поворота
    public Transform target; // цель

    // регистрация функции создания визарда в меню Unity
    [MenuItem("Window/Look At Wizard")]
    static void CreateWizard()
    {
        // создаем визард с одной кнопкой "Look At!"
        ScriptableWizard.DisplayWizard<LookAtWizard>("Look At", "Look At!");

        // если необходимо реализовать вторую 
        // кнопку, то можно воспользоваться
        // другой перегрузкой метода 
        // ScriptableWizard.DisplayWizard<> 
        // и реализовать функцию 
        // void OnWizardOtherButton ()
    }

    // флаг успешной настройки визарда
    private bool _wizardOk = false;

    // выполнение функции визарда - OnWizardCreate()
    void OnWizardCreate()
    {
        // выполняем только когда исходные данные верны
        if (_wizardOk)
        {
            source.LookAt(target);
        }
    }

    // функция выполняется при создании визарда 
    // и при изменении исходных данных пользователем
    void OnWizardUpdate()
    {
        _wizardOk = false;
        // один из параметров не указан
        if (source == null || target == null)
        {
            // helpString выдает подсказки пользователю
            helpString = "Selcect Source and Target!";
        }
        // если цель и объект совпадают
        else if ((source == target) && (source != null) )
        {
            helpString = "Source equals Target!";
        }
        else
        {
            // все проверки пройдены
            helpString = "Press \"Look At!\"!";
            _wizardOk = true;
        }
    }
}

Не забываем называть скрипт правильно (LookAtWizard.cs) и положить его в папку с названием Editor.

Вот и результат:

71e2520b4c3dabd8370c08907af371f8.png