/// <summary> /// Create a Canvas object /// </summary> /// <param name="name"></param> /// <returns></returns> public static GTUICanvas Create(string name) { GTUICanvas newCanvas = new GTUICanvas(); newCanvas.mGameObject = new GameObject(name); newCanvas.mCanvas = newCanvas.mGameObject.AddComponent<Canvas>(); newCanvas.mGraphicRaycaster = newCanvas.mGameObject.AddComponent<GraphicRaycaster>(); if (newCanvas.mCanvas != null) newCanvas.mCanvas.renderMode = RenderMode.Overlay; else { Debug.LogError("CreateCanvasGameObject: Failed to add Canvas component for " + name); return null; } if (newCanvas.mGraphicRaycaster != null) { //graphicRaycaster.priority = 3; } else { Debug.LogError("CreateCanvasGameObject: Failed to add GraphicRaycaster component for " + name); return null; } return newCanvas; }
/// <summary> /// Create button object /// </summary> /// <param name="treeNode"></param> /// <param name="parent"></param> /// <param name="canvas"></param> /// <returns></returns> private bool CreateButton(GTTreeNode treeNode, GTUIWidget parent, GTUICanvas canvas) { if (treeNode == null || parent == null || null == canvas) return false; string name = (treeNode.AsString() != string.Empty) ? treeNode.AsString() : "_UIButtonNoName"; GTTreeNode nodePosition = treeNode.GetChild(TagPosition); GTTreeNode nodeSize = treeNode.GetChild(TagSize); GTTreeNode nodePieceEnabled = treeNode.GetChild(TagPieceEnabled); GTTreeNode nodeEventType = treeNode.GetChild(TagEventType); GTTreeNode nodeVisible = treeNode.GetChild(TagVisible); GTTreeNode nodeAnchorPoint = treeNode.GetChild(TagAnchorPoint); GTTreeNode nodeColor = treeNode.GetChild(TagColor); GTTreeNode nodeChildren = treeNode.GetChild(TagChildren); GTTreeNode nodeText = treeNode.GetChild(TagText); GTTreeNode nodeFont = treeNode.GetChild(TagFont); GTTreeNode nodeFontSize = treeNode.GetChild(TagFontSize); Vector3 position = (nodePosition != null) ? nodePosition.AsVector3() : new Vector3(0.0f, 0.0f, 0.0f); Vector2 size = (nodeSize != null) ? nodeSize.AsVector2() : new Vector2(0.0f, 0.0f); string pieceName = (nodePieceEnabled != null) ? nodePieceEnabled.AsString() : "_noPieceName"; Vector2 anchor = (nodeAnchorPoint != null) ? nodeAnchorPoint.AsVector2() : new Vector2(0.0f, 0.0f); Vector3 vColor = (nodeColor != null) ? nodeColor.AsVector3() : new Vector3(255.0f, 255.0f, 255.0f); Color color = new Color(vColor.x / 255.0f, vColor.y / 255.0f, vColor.z / 255.0f); string text = (nodeText != null) ? nodeText.AsString() : "Button"; string fontName = (nodeFont != null) ? nodeFont.AsString() : "BabelSans"; int fontSize = (nodeFontSize != null) ? nodeFontSize.AsInt() : 16; GTUIButton button = GTUIButton.Create(name, position, size, parent.mGameObject); if (button == null) { Debug.LogError("CreateButton: Failed to create a button object: " + name); return false; } button.color = color; button.text = text; button.mText.textFont = GTUIManager.Instance.GetFont(fontName); button.mText.fontSize = fontSize; // Sprite Sprite sprite = canvas.mSkin.mFrameSet[pieceName]; if (sprite != null) button.sprite = canvas.mSkin.mFrameSet[pieceName]; else Debug.LogWarning("CreateButton: No piece sprite found: " + pieceName); //btn1.clickEvent.AddListener(OnBtnClick); // Children CreateChildren(nodeChildren, button, canvas); return true; }
/// <summary> /// Create image object /// </summary> /// <param name="treeNode"></param> /// <param name="parent"></param> /// <param name="canvas"></param> /// <returns></returns> private bool CreateImage(GTTreeNode treeNode, GTUIWidget parent, GTUICanvas canvas) { if (treeNode == null || parent == null || null == canvas) return false; string name = (treeNode.AsString() != string.Empty) ? treeNode.AsString() : "_UIImageNoName"; GTTreeNode nodePosition = treeNode.GetChild(TagPosition); GTTreeNode nodeSize = treeNode.GetChild(TagSize); GTTreeNode nodePieceEnabled = treeNode.GetChild(TagPieceEnabled); GTTreeNode nodeEventType = treeNode.GetChild(TagEventType); GTTreeNode nodeVisible = treeNode.GetChild(TagVisible); GTTreeNode nodeAnchorPoint = treeNode.GetChild(TagAnchorPoint); GTTreeNode nodeColor = treeNode.GetChild(TagColor); GTTreeNode nodeChildren = treeNode.GetChild(TagChildren); Vector3 position = (nodePosition != null) ? nodePosition.AsVector3() : new Vector3(0.0f, 0.0f, 0.0f); Vector2 size = (nodeSize != null) ? nodeSize.AsVector2() : new Vector2(0.0f, 0.0f); string pieceName = (nodePieceEnabled != null) ? nodePieceEnabled.AsString() : "_noPieceName"; Vector2 anchor = (nodeAnchorPoint != null) ? nodeAnchorPoint.AsVector2() : new Vector2(0.0f, 0.0f); Vector3 vColor = (nodeColor != null) ? nodeColor.AsVector3() : new Vector3(255.0f, 255.0f, 255.0f); Color color = new Color(vColor.x / 255.0f, vColor.y / 255.0f, vColor.z / 255.0f); GTUIImage image = GTUIImage.Create(name, position, size, parent.mGameObject); if (image == null) { Debug.LogError("CreateImage: Failed to create an image object: " + name); return false; } image.color = color; // Sprite Sprite sprite = canvas.mSkin.mFrameSet[pieceName]; if (sprite != null) image.sprite = canvas.mSkin.mFrameSet[pieceName]; else Debug.LogWarning("CreateImage: No piece sprite found: " + pieceName); // Children CreateChildren(nodeChildren, image, canvas); return true; }
private bool CreateChildren(GTTreeNode treeNode, GTUIWidget parent, GTUICanvas canvas) { if (treeNode == null) return false; for (int child = 0; child < treeNode.childCount; child++) { GTTreeNode childNode = treeNode.GetChild(child); if (childNode == null) continue; switch (childNode.tag) { case TagUIImage: CreateImage(childNode, parent, canvas); break; case TagUIButton: CreateButton(childNode, parent, canvas); break; } } return true; }