- Home /
How can i get SerializedProperty from UnityEvent which in List. Sorry for my Eng.
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.Events;
 using UnityEditor;
 using UnityEditor.SceneManagement;
 
 public class CustomEventsList : MonoBehaviour
 {
     public List<CustomEvent> events;
 
     public CustomEventsList()
     {
         events = new List<CustomEvent>();
     }
 
     public void RemoveEvent(string name)
     {
         foreach (var item in events)
         {
             if (item._name == name)
             {
                 events.Remove(item);
                 break;
             }
         }
     }
     public void AddEvent(string name)
     {
         events.Add(new CustomEvent(name));
     }
     public int IndexOfEvent(CustomEvent _event)
     {
         int index = -1;
         foreach (var item in events)
         {
             if (item == _event)
             {
                 index = events.IndexOf(item);
             }
         }
         return index;
     }
     public bool ContainsEvent(string name)
     {
         foreach (var item in events)
         {
             if (item._name == name)
             {
                 return true;
             }
         }
         return false;
     }
 }
 
 [System.Serializable]
 public class CustomEvent
 {
     [SerializeField]
     public string _name;
     [SerializeField]
     public UnityEvent _event;
 
     public CustomEvent(string _name)
     {
         this._name = _name;
         this._event = new UnityEvent();
     }
 }
 
 [CustomEditor(typeof(CustomEventsList))]
 public class CustomEventsListInspector : Editor
 {
     private CustomEventsList CEL;
     private string eventKey;
 
     private void Awake()
     {
         eventKey = "Событие";
     }
 
     private void OnEnable()
     {
         CEL = (CustomEventsList)target;
     }
 
     public override void OnInspectorGUI()
     {
         EditorGUILayout.BeginVertical("box");
         if (GUILayout.Button("Добавить событие", GUILayout.Height(30)))
         {
             if (!CEL.ContainsEvent(eventKey))
             {
                 CEL.AddEvent(eventKey);
             }
         }
         eventKey = EditorGUILayout.TextField("Имя события", eventKey);
         EditorGUILayout.EndVertical();
         if (CEL.events.Count > 0)
         {
             foreach (var item in CEL.events)
             {
                 SerializedProperty prop = ????????????;
                 EditorGUILayout.BeginVertical("box");
                 EditorGUILayout.BeginHorizontal();
                 EditorGUILayout.LabelField(item._name);
                 if (GUILayout.Button("Удалить"))
                 {
                     CEL.RemoveEvent(item._name);
                     break;
                 }
                 EditorGUILayout.EndHorizontal();
                 EditorGUILayout.PropertyField(prop);
                 EditorGUILayout.EndVertical();
             }
         }
 
         if (GUI.changed)
         {
             EditorUtility.SetDirty(CEL);
             EditorSceneManager.MarkSceneDirty(CEL.gameObject.scene);
         }
     }
 }
 
Answer by evgen4ik007 · Dec 13, 2020 at 02:17 AM
Found solution by myself
SerializedProperty prop = serializedObject.FindProperty("events").GetArrayElementAtIndex(i).FindPropertyRelative("_event")
Answer by Firestream1014 · Dec 13, 2020 at 12:00 AM
I'm sorry that I don't have the answer but hopefully this will help? https://answers.unity.com/questions/1270631/get-unityevent-reference-from-serializedproperty.html
unlucky no, i can't see his other script and code above private void OnEnable() { m$$anonymous$$yEventProp = serializedObject.FindProperty("m$$anonymous$$yEvent "); }
Your answer
 
 
             Follow this Question
Related Questions
How to Hide/Show List or Array in the inspector based on a variable? 0 Answers
Responsive Editor UI Button with custom style | How to remove GUIStyle.hover delay 0 Answers
Custom editor super slow even with no draw operations 1 Answer
OnInspectorGUI changes reset when played in editor or building 2 Answers
How can I recreate the Array Inspector element for a custom Inspector GUI? 7 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                