public void TabViewControlShowOrClose(bool nuclearBombSwitch, IMCTabViewToggle tvt) // 内部调用 { if (nuclearBombSwitch) //need judge otherwise collapse { if (toggles.Count > 0 && toggles.Count == contents.Count) { for (int i = 0; i < toggles.Count; i++) { if (toggles[i] == tvt) { tvt.toggle.isOn = true; contents[i].gameObject.SetActive(true); currentIndex = i; } if (toggles[i] != tvt) { toggles[i].toggle.isOn = false; contents[i].gameObject.SetActive(false); } } } } }
public static GameObject CreateTabView(Resources resources) { GameObject go = CreateUIElementRoot("IMC Tab View", s_ImageElementSize); go.AddComponent <CanvasGroup>(); IMCTabView tabView = go.AddComponent <IMCTabView>(); IMCImage image = go.AddComponent <IMCImage>(); image.sprite = resources.background; image.type = IMCImage.Type.Sliced; image.color = s_PanelColor; RectTransform tabViewRT = go.GetComponent <RectTransform>(); tabViewRT.sizeDelta = new Vector2(600, 250); tabViewRT.pivot = new Vector2(0.5f, 1); GameObject toggleContainer = CreateUIElementRoot("ToggleContainer", s_ImageElementSize); RectTransform toggleContainerRT = toggleContainer.GetComponent <RectTransform>(); toggleContainerRT.SetParent(tabViewRT); toggleContainerRT.anchorMin = new Vector2(0.5f, 1); toggleContainerRT.anchorMax = new Vector2(0.5f, 1); toggleContainerRT.pivot = new Vector2(0.5f, 0); toggleContainerRT.anchoredPosition = Vector2.zero; toggleContainerRT.sizeDelta = new Vector2(600, 50); ContentSizeFitter contentSizeFitter = toggleContainer.AddComponent <ContentSizeFitter>(); contentSizeFitter.horizontalFit = IMCUI.UI.ContentSizeFitter.FitMode.PreferredSize; toggleContainer.AddComponent <IMCHorizontalLayoutGroup>(); ToggleGroup toggleGroup = toggleContainer.AddComponent <ToggleGroup>(); for (int i = 0; i <= 2; i++) { GameObject toggle = CreateToggle(resources); toggle.transform.FindChild("Label").GetComponent <IMCText>().raycast = false;//if don't shut down IMCText is raycast attribute ,occur BUG. IMCTabViewToggle tabViewToggle = toggle.AddComponent <IMCTabViewToggle>(); tabViewToggle.tabView = tabViewRT.GetComponent <IMCTabView>(); tabViewRT.GetComponent <IMCTabView>().toggles.Add(tabViewToggle); // in editor script , add event invalidity. //tabViewToggle.toggle.onValueChanged.AddListener(tabViewToggle.parent.TabViewControlShowOrClose); IMCToggle toggleT = toggle.GetComponent <IMCToggle>(); toggleT.name = toggleT.name + i.ToString(); toggleT.transform.SetParent(toggleContainerRT); toggleT.group = toggleGroup; // because toggleContainer is ToggleGroup component,ToggleGroup is Execution order impact Toggle,so annotation this code . //if (i == 0) // toggleT.isOn = true; //else // toggleT.isOn = false; RectTransform backGround = toggle.transform.GetChild(0).GetComponent <RectTransform>(); backGround.anchorMin = Vector2.zero; backGround.anchorMax = Vector2.one; backGround.pivot = Vector2.zero; backGround.anchoredPosition = Vector2.zero; backGround.sizeDelta = Vector2.zero; RectTransform checkmark = backGround.GetChild(0).GetComponent <RectTransform>(); checkmark.anchorMin = Vector2.zero; checkmark.anchorMax = Vector2.one; checkmark.anchoredPosition = Vector2.zero; checkmark.sizeDelta = Vector2.zero; RectTransform labelRT = toggle.transform.GetChild(1).GetComponent <RectTransform>(); labelRT.anchoredPosition = Vector2.zero; labelRT.sizeDelta = Vector2.zero; labelRT.GetComponent <IMCText>().alignment = TextAnchor.MiddleCenter; LayoutElement layoutElement = toggle.AddComponent <LayoutElement>(); layoutElement.preferredWidth = 200; layoutElement.preferredHeight = 20; } GameObject contentContainer = CreateUIElementRoot("ContentContainer", s_ImageElementSize); RectTransform contentContainerRT = contentContainer.GetComponent <RectTransform>(); contentContainerRT.sizeDelta = tabViewRT.sizeDelta; contentContainerRT.SetParent(tabViewRT); contentContainerRT.anchoredPosition = Vector2.zero; for (int i = 0; i <= 2; i++) { GameObject toggleContent = CreateUIElementRoot("TabContent" + i.ToString(), s_ImageElementSize); IMCImage toggleContentImage = toggleContent.AddComponent <IMCImage>(); toggleContentImage.sprite = resources.background; toggleContentImage.type = IMCImage.Type.Sliced; toggleContentImage.color = s_PanelColor; tabViewRT.GetComponent <IMCTabView>().contents.Add(toggleContentImage); RectTransform toggleContentRT = toggleContent.GetComponent <RectTransform>(); toggleContentRT.sizeDelta = tabViewRT.sizeDelta; toggleContentRT.SetParent(contentContainerRT); toggleContentRT.anchoredPosition = Vector2.zero; } return(go); }