Как сделать редактор для своего класса?

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Как сделать редактор для своего класса?

Сообщение Johnson 15 июн 2013, 07:52

Здравствуйте, уважаемые.

Есть класс GuiManager, в нем есть публичное поле
Синтаксис:
Используется csharp
    public HotKey Hotkey;


Класс HotKey:
Синтаксис:
Используется csharp
public class HotKey : ScriptableObject {
    public KeyCode Key;
    public EventModifiers Modifiers;
    public string PerformCommand;
    public bool IsGlobal;
}


Как написать редактор, который бы работал как редактор GUIStyle'а?

Изображение

Вот так. Это смотреть в сторону CustomEditor или как ещё? Нужно, чтобы объект создавался автоматически, и сериализовался.
Потыкался с CustomEditor, но так и не понял, как он работает...
Johnson появился в результате деления на null. Кривокодер-рецидивист. Кусается.
Хорошо, что в больнице хирурги не такие же, как новички на этом форуме. Пришел вытащить гвоздь из руки, а они яйца оттяпали...
ProgrammerNotFoundException on line 0!
Аватара пользователя
Johnson
UNIверсал
 
Сообщения: 447
Зарегистрирован: 09 июн 2013, 16:31
Откуда: Пермь
Skype: Johnson1893
  • Сайт
  • ICQ

Re: Как сделать редактор для своего класса?

Сообщение Nicloay 15 июн 2013, 08:52

добавь к своему классу атрибут [Serializable] и по идее он должен будет в иерархии отобразить все публичные поля.
Ну уж если хочешь свой редактор пописать то в офф документацию по слову CustomEditor http://docs.unity3d.com/Documentation/C ... ditor.html
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Как сделать редактор для своего класса?

Сообщение Johnson 15 июн 2013, 09:41

Нет, мне прямо-таки редактор не нужен, мне будет достаточно публичных полей.

Только атрибут Serializable не помогает - в классе GuiManager всё равно пустой объект. Да и утром пробовал это уже...

Я скрин который показал - это наследник ScriptableObject с этим атрибутом как раз.
Johnson появился в результате деления на null. Кривокодер-рецидивист. Кусается.
Хорошо, что в больнице хирурги не такие же, как новички на этом форуме. Пришел вытащить гвоздь из руки, а они яйца оттяпали...
ProgrammerNotFoundException on line 0!
Аватара пользователя
Johnson
UNIверсал
 
Сообщения: 447
Зарегистрирован: 09 июн 2013, 16:31
Откуда: Пермь
Skype: Johnson1893
  • Сайт
  • ICQ

Re: Как сделать редактор для своего класса?

Сообщение Nicloay 15 июн 2013, 10:07

а поле пробовал как [SerializeField] пометить и оба класса [Srializable] ? как минимум bool и string должны были отобразится
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Как сделать редактор для своего класса?

Сообщение Johnson 15 июн 2013, 11:13

Я уже как только не перепробовал...

Изображение
Johnson появился в результате деления на null. Кривокодер-рецидивист. Кусается.
Хорошо, что в больнице хирурги не такие же, как новички на этом форуме. Пришел вытащить гвоздь из руки, а они яйца оттяпали...
ProgrammerNotFoundException on line 0!
Аватара пользователя
Johnson
UNIверсал
 
Сообщения: 447
Зарегистрирован: 09 июн 2013, 16:31
Откуда: Пермь
Skype: Johnson1893
  • Сайт
  • ICQ

Re: Как сделать редактор для своего класса?

Сообщение Ert Donuell 15 июн 2013, 14:01

Так у меня работает:

Синтаксис:
Используется csharp
using UnityEngine;

public class Character : MonoBehaviour
{
        public Eyes eyes;
        public Inventory inventory;
}


Синтаксис:
Используется csharp
using System;
using UnityEngine;

[Serializable]
public class Eyes
{
        public Transform transform;
        public float viewDistance = Mathf.Infinity;
        public float fieldOfView = 60.0f;
}
 


Изображение
Добавить dmitrii.baranov.yumasoft в Skype
Аватара пользователя
Ert Donuell
Старожил
 
Сообщения: 781
Зарегистрирован: 05 июл 2010, 09:50
Откуда: Санкт-Петербург
  • ICQ

Re: Как сделать редактор для своего класса?

Сообщение Ert Donuell 15 июн 2013, 14:10

Вот, кстати, Интересная статья по сабжу как раз про создание редактора класса:



Добавить dmitrii.baranov.yumasoft в Skype
Аватара пользователя
Ert Donuell
Старожил
 
Сообщения: 781
Зарегистрирован: 05 июл 2010, 09:50
Откуда: Санкт-Петербург
  • ICQ

Re: Как сделать редактор для своего класса?

Сообщение Neodrop 16 июн 2013, 17:05

Можно написать свой проперти драйвер

http://docs.unity3d.com/Documentation/S ... rawer.html

Но, конкретно в вашем случае, ничего не отображается потому, что тип переменной не просто класс, а ScriptableObject. И в вашей переменной просто ничего нет (объект класса не создан и равен null). Достаточно убрать наследование от ScriptableObject (в данном случае от него похоже нет совершенно никакого смысла) и всё само-собой заработает.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Как сделать редактор для своего класса?

Сообщение Johnson 16 июн 2013, 20:04

Спасибо, то что нужно.
Johnson появился в результате деления на null. Кривокодер-рецидивист. Кусается.
Хорошо, что в больнице хирурги не такие же, как новички на этом форуме. Пришел вытащить гвоздь из руки, а они яйца оттяпали...
ProgrammerNotFoundException on line 0!
Аватара пользователя
Johnson
UNIверсал
 
Сообщения: 447
Зарегистрирован: 09 июн 2013, 16:31
Откуда: Пермь
Skype: Johnson1893
  • Сайт
  • ICQ


Вернуться в Editor

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2