private static void BindComponent(GameObject obj, UIComponentBind bind)
    {
        if (bind == null)
        {
            bind          = AddComponent <UIComponentBind>(obj);
            bind.mObjName = obj.name;
            bind.mComponentDataList.Clear();
        }

        for (int i = 0; i < obj.transform.childCount; i++)
        {
            Transform trans = obj.transform.GetChild(i);
            if (trans.name.StartsWith("b_"))
            {
                UIComponentBind.ComponentData data = new UIComponentBind.ComponentData();
                InitComponentData(trans, data);
                bind.mComponentDataList.Add(data);
            }

            if (trans.name.StartsWith("b_t_"))
            {
                //模版对象
                BindComponent(trans.gameObject, null);
            }
            else
            {
                BindComponent(trans.gameObject, bind);
            }
        }
    }
Exemple #2
0
    //运行时将控件赋值给lua变量
    public static void BindToLua(GameObject obj, LuaTable table)
    {
        if (obj == null || table == null)
        {
            return;
        }

        UIComponentBind bind = obj.GetComponent <UIComponentBind>();

        if (bind == null)
        {
            return;
        }

        bind.CompentsTable = table;
        table.Set("transform", obj.transform);
        table.Set("gameObject", obj);

        for (int i = 0; i < bind.mComponentDataList.Count; i++)
        {
            ComponentData data = bind.mComponentDataList[i];
            switch (data.type)
            {
            case "Button":
            {
                table.Set(data.name, data.component as Button);
                //table[data.name] = data.component as Button;
            }
            break;

            case "Dropdown":
            {
                table.Set(data.name, data.component as Dropdown);
                //table[data.name] = data.component as Dropdown;
            }
            break;

            case "InputField":
            {
                table.Set(data.name, data.component as InputField);
                //table[data.name] = data.component as InputField;
            }
            break;

            case "Slider":
            {
                table.Set(data.name, data.component as Slider);
                //table[data.name] = data.component as Slider;
            }
            break;

            case "Toggle":
            {
                table.Set(data.name, data.component as Toggle);
                //table[data.name] = data.component as Toggle;
            }
            break;

            case "GridLayoutGroup":
            {
                table.Set(data.name, data.component as GridLayoutGroup);
                //table[data.name] = data.component as GridLayoutGroup;
            }
            break;

            case "VerticalLayoutGroup":
            {
                table.Set(data.name, data.component as VerticalLayoutGroup);
                //table[data.name] = data.component as VerticalLayoutGroup;
            }
            break;

            case "HorizontalLayoutGroup":
            {
                table.Set(data.name, data.component as HorizontalLayoutGroup);
            }
            break;

            case "LoopVerticalScrollRect":
            {
                table.Set(data.name, data.component as LoopVerticalScrollRect);
            }
            break;

            case "LoopHorizontalScrollRect":
            {
                table.Set(data.name, data.component as  LoopHorizontalScrollRect);
            }
            break;

            case "ScrollRect":
            {
                table.Set(data.name, data.component as ScrollRect);
                //table[data.name] = data.component as ScrollRect;
            }
            break;

            case "Image":
            {
                table.Set(data.name, data.component as Image);
                //table[data.name] = data.component as Image;
            }
            break;

            case "ImageExt":
            {
                table.Set(data.name, data.component as ImageExt);
                //table[data.name] = data.component as ImageExt;
            }
            break;

            case "RawImage":
            {
                table.Set(data.name, data.component as RawImage);
                //table[data.name] = data.component as RawImage;
            }
            break;

            case "RawImageExt":
            {
                table.Set(data.name, data.component as RawImageExt);
                //table[data.name] = data.component as RawImageExt;
            }
            break;

            case "TextMeshProUGUI":
            {
                table.Set(data.name, data.component as TextMeshProUGUI);
            }
            break;

            case "Text":
            {
                table.Set(data.name, data.component as Text);
                //table[data.name] = data.component as Text;
            }
            break;

            case "RectTransform":
            {
                table.Set(data.name, data.component as RectTransform);
                //table[data.name] = data.component as RectTransform;
            }
            break;

            case "Transform":
            {
                table.Set(data.name, data.component as Transform);
                //table[data.name] = data.component as Transform;
            }
            break;
            }
        }
    }