示例#1
0
        private void ProcessListElement(FieldInfo field, string fieldName, object templateObject, RectTransform parent, bool addToForm)
        {
            ListElementAttribute listElementAttr = Utils.ExtractAttributeFromFieldInfo <ListElementAttribute>(field);

            if (listElementAttr != null)
            {
                UIListElement uiListElement = CreateUIListElement(fieldName, parent);

                if (uiListElement != null)
                {
                    object listFieldValue = field.GetValue(templateObject);

                    if (typeof(IList).IsAssignableFrom(field.FieldType))
                    {
                        IList list            = listFieldValue as IList;
                        Type  listElementType = Utils.GetElementTypeOfEnumerable(field.FieldType);

                        if (listElementType != null)
                        {
                            if (listElementType == typeof(String))
                            {
                                uiListElement.TemplateObject = null;
                            }
                            else
                            {
                                uiListElement.TemplateObject = Activator.CreateInstance(listElementType);
                            }
                        }

                        for (int i = 0; i < list.Count; i++)
                        {
                            var    item     = list[i];
                            string itemName = fieldName;

                            if ("S".Equals(fieldName.Last().ToString().ToUpper()))
                            {
                                itemName = itemName.Substring(0, fieldName.Length - 1) + "_" + (i + 1);
                            }

                            ProcessObjectField(item, itemName, listElementType, uiListElement.listContent);

                            //ConvertObjectToFormUIs(item, uiListElement.listContent, false);
                            //if (uiTextFieldListElement != null)
                            //{
                            //	uiTextFieldListElement.EnableDeleteButton();
                            //}
                            //uiListElement.AddComponent(uiTextFieldListElement);
                        }
                    }

                    if (addToForm)
                    {
                        uiFormInstance?.AddUIComponent(uiListElement);
                    }
                }
            }
        }
示例#2
0
        public void AddUIComponent(UIListElement uiListElement)
        {
            if (lists == null)
            {
                lists = new List <UIListElement>();
            }

            if (lists != null)
            {
                lists.Add(uiListElement);
            }
        }
示例#3
0
        private UIListElement CreateUIListElement(string title, Transform parent)
        {
            UIListElement uiListElement = null;

            if (uiListElementPrefab != null)
            {
                uiListElement = Instantiate(uiListElementPrefab, parent);

                if (uiListElement != null)
                {
                    string objectName = Utils.RemoveCloneMarkerFromString(uiListElement.name);

                    uiListElement.name = objectName + title;
                    uiListElement.SetLabel(title);
                }
            }

            return(uiListElement);
        }