public UINode DrawLayer(Layer layer, UINode parent) { UINode node = PSDImportUtility.InstantiateItem(PSDImporterConst.PREFAB_PATH_GROUP, layer.name, parent); UnityEngine.UI.LayoutGroup group = null; string type = layer.arguments[0].ToLower(); float span = 0; float.TryParse(layer.arguments[1], out span); switch (type) { case "v": group = node.AddComponent <UnityEngine.UI.VerticalLayoutGroup>(); group.childAlignment = TextAnchor.UpperLeft; ((UnityEngine.UI.VerticalLayoutGroup)group).spacing = span; break; case "h": group = node.AddComponent <UnityEngine.UI.HorizontalLayoutGroup>(); group.childAlignment = TextAnchor.UpperLeft; ((UnityEngine.UI.HorizontalLayoutGroup)group).spacing = span; break; } PSDImportUtility.SetRectTransform(layer, group.GetComponent <RectTransform>(), parent.GetComponent <RectTransform>()); UINode[] nodes = pSDImportCtrl.DrawImages(layer.images, node); foreach (var item in nodes) { item.anchoType = UINode.AnchoType.Left | UINode.AnchoType.Up; } nodes = pSDImportCtrl.DrawLayers(layer.layers, node); foreach (var item in nodes) { item.anchoType = UINode.AnchoType.Left | UINode.AnchoType.Up; } return(node); }
public UINode DrawLayer(Layer layer, UINode parent) { UINode node = PSDImportUtility.InstantiateItem(PSDImporterConst.PREFAB_PATH_SCROLLVIEW, layer.name, parent); UnityEngine.UI.ScrollRect scrollRect = node.GetComponent <UnityEngine.UI.ScrollRect>(); UINode childNode = PSDImportUtility.InstantiateItem(PSDImporterConst.PREFAB_PATH_IMAGE, "Viewport", node); scrollRect.viewport = childNode.GetComponent <RectTransform>(); childNode.AddComponent <Mask>(); childNode.anchoType = UINode.AnchoType.XStretch | UINode.AnchoType.YStretch; UnityEngine.UI.Image graph = scrollRect.GetComponent <UnityEngine.UI.Image>(); bool havebg = false; for (int i = 0; i < layer.images.Length; i++) { Image image = layer.images[i]; if (image.name.ToLower().StartsWith("b_")) { havebg = true; PSDImportUtility.SetPictureOrLoadColor(image, graph); PSDImportUtility.SetRectTransform(image, graph.GetComponent <RectTransform>()); } else { ctrl.DrawImage(image, node); } } if (!havebg) { UnityEngine.Object.DestroyImmediate(graph); PSDImportUtility.SetRectTransform(layer, scrollRect.GetComponent <RectTransform>(), parent.GetComponent <RectTransform>()); } PSDImportUtility.SetRectTransform(layer, childNode.GetComponent <RectTransform>(), scrollRect.GetComponent <RectTransform>()); if (layer.arguments != null) { string type = layer.arguments[0].ToUpper(); switch (type) { case "V": scrollRect.vertical = true; scrollRect.horizontal = false; break; case "H": scrollRect.vertical = false; scrollRect.horizontal = true; break; case "VH": case "HV": scrollRect.vertical = true; scrollRect.horizontal = true; break; default: break; } } if (layer.layers != null) { for (int i = 0; i < layer.layers.Length; i++) { Layer child = layer.layers[i]; string childLowerName = child.name; UINode c_Node = ctrl.DrawLayer(child, childNode); if (childLowerName.StartsWith("c_")) { scrollRect.content = c_Node.GetComponent <RectTransform>(); } else if (childLowerName.StartsWith("vb_")) { scrollRect.verticalScrollbar = c_Node.GetComponent <Scrollbar>(); scrollRect.verticalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHide; } else if (childLowerName.StartsWith("hb_")) { scrollRect.horizontalScrollbar = c_Node.GetComponent <Scrollbar>(); scrollRect.horizontalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHide; } } } return(node); }