public static string CollectEvent(Object parent, UnityEventBase eventBase, SLUIUnityEventHelper helper, out string varName)
        {
            var eventVar = FixVarName("e_" + parent.GetInstanceID());
            var sb       = new StringBuilder();

            sb.AppendLine($"local {eventVar} = SLUIUnityEvent()");

            for (int index = 0; index < eventBase.GetPersistentEventCount(); index++)
            {
                var methodName      = eventBase.GetPersistentMethodName(index);
                var eventTarget     = eventBase.GetPersistentTarget(index);
                var eventTargetName = "nil";
                if (eventTarget is RectTransform t)
                {
                    eventTargetName = CollectVar(t);
                }
                else if (eventTarget is GameObject g)
                {
                    eventTargetName = CollectVar(g.GetComponent <RectTransform>());
                }
                else if (eventTarget is Component c)
                {
                    eventTargetName = CollectVar(c);
                }
                else
                {
                    Debug.LogWarning($"Event collecting problem. Unable to collect name of a target. ({eventTarget.name}({eventTarget.GetType()}))");
                }

                var methodVar = FixVarName($"{eventVar}_m{index}");
                sb.AppendLine($"local {methodVar} = SLUIEventItem({eventTargetName}, '{methodName}')");
                if (helper != null && helper.Items != null && helper.Items.Count > 0)
                {
                    var objRow = helper.Items[index].obj;
                    foreach (var s in objRow)
                    {
                        if (bool.TryParse(s, out var b))
                        {
                            sb.AppendLine($"{methodVar}:Add({b.ToString().ToLower()})");
                        }
                        else if (int.TryParse(s, out var i))
                        {
                            sb.AppendLine($"{methodVar}:Add({i})");
                        }
                        else if (float.TryParse(s, out var f))
                        {
                            sb.AppendLine($"{methodVar}:Add({f.ToString(CultureInfo.InvariantCulture)})");
                        }
                        else
                        {
                            sb.AppendLine($"{methodVar}:Add('{s}')");
                        }
                    }
                }
                sb.AppendLine($"{eventVar}:Add({methodVar})");
            }
            varName = eventVar;
            return(sb.ToString());
        }
 private void OnEnable()
 {
     _target = (SLUIUnityEventHelper)target;
 }