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; }