Страница 1 из 1

custom editor ,UnityEvent

СообщениеДобавлено: 12 фев 2016, 13:06
demozbox
В скрипте есть переменная типа public UnityEvent myEvent;
как мне отобразить эту переменную c custom editor ?

Re: custom editor ,UnityEvent

СообщениеДобавлено: 12 фев 2016, 13:25
Tolking
Подозреваю, что так-же, как и все остальные SerializedProperty...

Re: custom editor ,UnityEvent

СообщениеДобавлено: 12 фев 2016, 13:43
demozbox
Tolking писал(а):Подозреваю, что так-же, как и все остальные SerializedProperty...

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

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

Re: custom editor ,UnityEvent

СообщениеДобавлено: 14 фев 2016, 05:33
demozbox
я нашел способ:
Синтаксис:
Используется 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();
    } }

Re: custom editor ,UnityEvent

СообщениеДобавлено: 13 апр 2016, 09:15
Unitmen
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();
    }
}