custom editor ,UnityEvent

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

custom editor ,UnityEvent

Сообщение demozbox 12 фев 2016, 13:06

В скрипте есть переменная типа public UnityEvent myEvent;
как мне отобразить эту переменную c custom editor ?
Аватара пользователя
demozbox
UNITрон
 
Сообщения: 170
Зарегистрирован: 20 июн 2014, 07:57

Re: custom editor ,UnityEvent

Сообщение Tolking 12 фев 2016, 13:25

Подозреваю, что так-же, как и все остальные SerializedProperty...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2715
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: custom editor ,UnityEvent

Сообщение demozbox 12 фев 2016, 13:43

Tolking писал(а):Подозреваю, что так-же, как и все остальные SerializedProperty...

было бы здорово, если бы показал конкретный пример. разглядываю вот эту страницу http://docs.unity3d.com/ScriptReference ... Field.html
и так и не догоняю, как же мне переменную, которая в обычном скрипте задается как public UnityEvent myEvent; показать в инспекторе кастомного эдитора.

помогите мне в кастом эдиторе сделать то же, что на картинке.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
demozbox
UNITрон
 
Сообщения: 170
Зарегистрирован: 20 июн 2014, 07:57

Re: custom editor ,UnityEvent

Сообщение demozbox 14 фев 2016, 05:33

я нашел способ:
Синтаксис:
Используется csharp
 SerializedProperty sprop = serializedObject.FindProperty("testEvent");
    EditorGUIUtility.LookLikeControls();
    EditorGUILayout.PropertyField(sprop);
    serializedObject.ApplyModifiedProperties();


но появился вопрос- как показать список эвентов?
Синтаксис:
Используется csharp
public class BTNPattern : MonoBehaviour{
    public List <UnityEvent> testEventS; }    

editor script:
Синтаксис:
Используется csharp
CustomEditor(typeof(BTNPattern))]
    public class BTNPatternEditor : Editor{
    public override void OnInspectorGUI(){
    BTNPattern myTarget = (BTNPattern)target;
    // SerializedProperty sprop = serializedObject.FindProperty("testEvent");
    // надо увидеть элемент списка Target.testEvents(1);
    EditorGUIUtility.LookLikeControls();
    EditorGUILayout.PropertyField(sprop);
    serializedObject.ApplyModifiedProperties();
    } }
Аватара пользователя
demozbox
UNITрон
 
Сообщения: 170
Зарегистрирован: 20 июн 2014, 07:57

Re: custom editor ,UnityEvent

Сообщение Unitmen 13 апр 2016, 09:15

demozbox писал(а):помогите мне в кастом эдиторе сделать то же, что на картинке.


держи и не мучайся....

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

public class Example : MonoBehaviour
{

    [Serializable]
    public class ExampleEvent : UnityEvent { }

    public ExampleEvent onEvent = new ExampleEvent();

    public void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)) onEvent.Invoke();
    }
}
 


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

[CustomEditor(typeof(Example))]
public class ExampleEditor : Editor
{

    public override void OnInspectorGUI()
    {
        this.serializedObject.Update();
        EditorGUILayout.PropertyField(this.serializedObject.FindProperty("onEvent"), true);
        this.serializedObject.ApplyModifiedProperties();
    }
}
 
Аватара пользователя
Unitmen
UNIт
 
Сообщения: 122
Зарегистрирован: 10 авг 2013, 00:55


Вернуться в Editor

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

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