Показать сообщение отдельно
Старый 23.02.2011, 15:23   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Расширение редактора Unity

Сегодня хочу поделиться еще одним простым способом добавления собственных функций в редактор 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.

Вот и результат:
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Amatsu (21.11.2011), Fatalix3d (23.02.2011), Harter (15.01.2012), maxturbo (09.03.2011), Nuprahtor (23.02.2011)