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