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);
            }
        }
    }
    private static void GenerateBindComponentCode(StreamWriter sw, string name)
    {
        //写入插入的
        sw.WriteLine("");
        sw.WriteLine("--@start 导出的组件列表,使用self.xxx来访问");
        UIComponentBind[] bindDatas = Selection.activeGameObject.GetComponentsInChildren <UIComponentBind>(true);

        for (int i = 0; i < bindDatas[0].mComponentDataList.Count; i++)
        {
            UIComponentBind.ComponentData data = bindDatas[0].mComponentDataList[i];
            sw.WriteLine(string.Format("--local {0} {1}", data.name, data.type));
        }

        for (int i = 1; i < bindDatas.Length; i++)
        {
            sw.WriteLine("");
            sw.WriteLine(string.Format("--{0}的导出的子元素", bindDatas[i].mObjName));
            for (int j = 0; j < bindDatas[i].mComponentDataList.Count; j++)
            {
                UIComponentBind.ComponentData data = bindDatas[i].mComponentDataList[j];
                sw.WriteLine(string.Format("--{0} {1}", data.name, data.type));
            }
        }

        //sw.WriteLine("");
        //sw.WriteLine(string.Format("function {0}:BindUI()", name));
        //for (int i = 0; i < bindDatas[0].mComponentDataList.Count; i++)
        //{
        //    UIComponentBind.ComponentData data = bindDatas[0].mComponentDataList[i];
        //    sw.WriteLine(string.Format("{0} = self.{1}", data.name, data.name));
        //}

        //sw.WriteLine("end");
        sw.WriteLine("--@end");
        sw.WriteLine("");
    }
 private static void InitComponentData(Transform obj, UIComponentBind.ComponentData data)
 {
     data.name = obj.name;
     if (obj.GetComponent <Button>() != null)
     {
         data.type      = "Button";
         data.component = obj.GetComponent <Button>();
     }
     else if (obj.GetComponent <Dropdown>() != null)
     {
         data.type      = "Dropdown";
         data.component = obj.GetComponent <Dropdown>();
     }
     else if (obj.GetComponent <InputField>() != null)
     {
         data.type      = "InputField";
         data.component = obj.GetComponent <InputField>();
     }
     else if (obj.GetComponent <Slider>() != null)
     {
         data.type      = "Slider";
         data.component = obj.GetComponent <Slider>();
     }
     else if (obj.GetComponent <Toggle>() != null)
     {
         data.type      = "Toggle";
         data.component = obj.GetComponent <Toggle>();
     }
     else if (obj.GetComponent <GridLayoutGroup>() != null)
     {
         data.type      = "GridLayoutGroup";
         data.component = obj.GetComponent <GridLayoutGroup>();
     }
     else if (obj.GetComponent <VerticalLayoutGroup>() != null)
     {
         data.type      = "VerticalLayoutGroup";
         data.component = obj.GetComponent <VerticalLayoutGroup>();
     }
     else if (obj.GetComponent <HorizontalLayoutGroup>() != null)
     {
         data.type      = "HorizontalLayoutGroup";
         data.component = obj.GetComponent <HorizontalLayoutGroup>();
     }
     else if (obj.GetComponent <LoopHorizontalScrollRect>() != null)
     {
         data.type      = "LoopHorizontalScrollRect";
         data.component = obj.GetComponent <LoopHorizontalScrollRect>();
     }
     else if (obj.GetComponent <LoopVerticalScrollRect>() != null)
     {
         data.type      = "LoopVerticalScrollRect";
         data.component = obj.GetComponent <LoopVerticalScrollRect>();
     }
     else if (obj.GetComponent <ScrollRect>() != null)
     {
         data.type      = "ScrollRect";
         data.component = obj.GetComponent <ScrollRect>();
     }
     else if (obj.GetComponent <ImageExt>() != null)
     {
         data.type      = "ImageExt";
         data.component = obj.GetComponent <ImageExt>();
     }
     else if (obj.GetComponent <Image>() != null)
     {
         data.type      = "Image";
         data.component = obj.GetComponent <Image>();
     }
     else if (obj.GetComponent <RawImageExt>() != null)
     {
         data.type      = "RawImageExt";
         data.component = obj.GetComponent <RawImageExt>();
     }
     else if (obj.GetComponent <RawImage>() != null)
     {
         data.type      = "RawImage";
         data.component = obj.GetComponent <RawImage>();
     }
     else if (obj.GetComponent <TextMeshProUGUI>() != null)
     {
         data.type      = "TextMeshProUGUI";
         data.component = obj.GetComponent <TextMeshProUGUI>();
     }
     else if (obj.GetComponent <Text>() != null)
     {
         Debug.LogError("请不要使用Text组件了,使用新版的TextMeshPro组件");
         //data.type = "Text";
         //data.component = obj.GetComponent<Text>();
     }
     else if (obj.GetComponent <RectTransform>() != null)
     {
         data.type      = "RectTransform";
         data.component = obj.GetComponent <RectTransform>();
     }
     else if (obj.GetComponent <Transform>() != null)
     {
         data.type      = "Transform";
         data.component = obj.GetComponent <Transform>();
     }
 }