// Use this for initialization public void Start() { m_control_table = new Hashtable(); m_animations = new Hashtable(); XmlElement tempElem = null; string value = ""; TextAsset xml = Resources.Load(m_ui_cfgxml) as TextAsset; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml.text); XmlNode root = xmlDoc.DocumentElement; foreach (XmlNode node1 in root.ChildNodes) { if ("UIElem" == node1.Name) { foreach (XmlNode xmlNode in node1.ChildNodes) { tempElem = (XmlElement)xmlNode; if ("UIButton" == xmlNode.Name) { UIButtonBase button = null; value = tempElem.GetAttribute("rect").Trim(); string[] digital = value.Split(','); value = tempElem.GetAttribute("type").Trim(); if ("click" == value) { button = new UIClickButton(); ((UIClickButton)button).Rect = new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())); } else if ("push" == value) { button = new UIPushButton(); ((UIPushButton)button).Rect = new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())); } else if ("select" == value) { button = new UISelectButton(); ((UISelectButton)button).Rect = new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())); } if (null == button) { continue; } value = tempElem.GetAttribute("id").Trim(); button.Id = int.Parse(value); value = tempElem.GetAttribute("enable").Trim(); if (value.Length > 1) { button.Enable = ("true" == value); } value = tempElem.GetAttribute("visible").Trim(); if (value.Length > 1) { button.Visible = ("true" == value); } tempElem = (XmlElement)xmlNode.SelectSingleNode("Normal"); if (null != tempElem) { value = tempElem.GetAttribute("rect").Trim(); digital = value.Split(','); value = tempElem.GetAttribute("material").Trim(); button.SetTexture(UIButtonBase.State.Normal, LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()))); } tempElem = (XmlElement)xmlNode.SelectSingleNode("Press"); if (null != tempElem) { value = tempElem.GetAttribute("rect").Trim(); digital = value.Split(','); value = tempElem.GetAttribute("material").Trim(); button.SetTexture(UIButtonBase.State.Pressed, LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()))); } tempElem = (XmlElement)xmlNode.SelectSingleNode("Disable"); if (null != tempElem) { value = tempElem.GetAttribute("rect").Trim(); digital = value.Split(','); value = tempElem.GetAttribute("material").Trim(); button.SetTexture(UIButtonBase.State.Disabled, LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()))); } tempElem = (XmlElement)xmlNode.SelectSingleNode("Hover"); if (null != tempElem) { value = tempElem.GetAttribute("rect").Trim(); digital = value.Split(','); value = tempElem.GetAttribute("material").Trim(); button.SetHoverSprite(LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()))); } m_UIManagerRef.Add(button); m_control_table.Add(button.Id, button); } else if ("UIImage" == xmlNode.Name) { UIImage image = new UIImage(); value = tempElem.GetAttribute("id").Trim(); image.Id = int.Parse(value); value = tempElem.GetAttribute("rect").Trim(); string[] digital = value.Split(','); image.Rect = new Rect(int.Parse(digital[0]), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())); value = tempElem.GetAttribute("enable").Trim(); if (value.Length > 1) { image.Enable = ("true" == value); } value = tempElem.GetAttribute("visible").Trim(); if (value.Length > 1) { image.Visible = ("true" == value); } tempElem = (XmlElement)xmlNode.SelectSingleNode("Texture"); if (null != tempElem) { value = tempElem.GetAttribute("rect").Trim(); digital = value.Split(','); value = tempElem.GetAttribute("material").Trim(); image.SetTexture(LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()))); } m_UIManagerRef.Add(image); m_control_table.Add(image.Id, image); } else if ("UIText" == xmlNode.Name) { UIText text = new UIText(); value = tempElem.GetAttribute("id").Trim(); text.Id = int.Parse(value); value = tempElem.GetAttribute("rect").Trim(); string[] digital = value.Split(','); text.Rect = new Rect(int.Parse(digital[0]), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())); value = tempElem.GetAttribute("chargap").Trim(); if (value.Length > 1) { text.CharacterSpacing = int.Parse(value); } value = tempElem.GetAttribute("linegap").Trim(); if (value.Length > 1) { text.LineSpacing = int.Parse(value); } value = tempElem.GetAttribute("autoline").Trim(); if (value.Length > 1) { text.AutoLine = ("true" == value); } value = tempElem.GetAttribute("align").Trim(); if (value.Length > 1) { text.AlignStyle = (UIText.enAlignStyle)Enum.Parse(typeof(UIText.enAlignStyle), value); } value = tempElem.GetAttribute("enable").Trim(); if (value.Length > 1) { text.Enable = ("true" == value); } value = tempElem.GetAttribute("visible").Trim(); if (value.Length > 1) { text.Visible = ("true" == value); } value = tempElem.GetAttribute("font").Trim(); text.SetFont(m_font_path + value); value = tempElem.GetAttribute("color").Trim(); if (value.Length > 1) { digital = value.Split(','); text.SetColor(new Color(int.Parse(digital[0].Trim()) / 255.0f, int.Parse(digital[1].Trim()) / 255.0f, int.Parse(digital[2].Trim()) / 255.0f, int.Parse(digital[3].Trim()) / 255.0f)); } text.SetText(xmlNode.InnerText.Trim(new char[] { ' ', '\t', '\r', '\n' })); m_UIManagerRef.Add(text); m_control_table.Add(text.Id, text); } //UIText } // for } else if ("UIAnimation" == node1.Name) { foreach (XmlNode xmlNode in node1.ChildNodes) { tempElem = (XmlElement)xmlNode; if ("Animation" != xmlNode.Name) { continue; } UIAnimations animation = new UIAnimations(); value = tempElem.GetAttribute("id").Trim(); animation.animation_id = int.Parse(value); Debug.Log(value); value = tempElem.GetAttribute("control_id").Trim(); Debug.Log(value); string[] digital = value.Split(','); for (int i = 0; i < digital.Length; ++i) { UIAnimations.ControlData data = new UIAnimations.ControlData(); data.control_id = int.Parse(digital[i].Trim()); animation.control_data.Add(data); } tempElem = (XmlElement)xmlNode.SelectSingleNode("Translate"); if (null != tempElem) { animation.translate_have = true; value = tempElem.GetAttribute("time").Trim(); animation.translate_time = float.Parse(value); value = tempElem.GetAttribute("offset").Trim(); if (value.Length > 0) { digital = value.Split(','); animation.translate_offset.x = int.Parse(digital[0].Trim()); animation.translate_offset.y = int.Parse(digital[1].Trim()); } value = tempElem.GetAttribute("restore").Trim(); if (value.Length > 0) { animation.translate_restore = ("true" == value); } value = tempElem.GetAttribute("loop").Trim(); if (value.Length > 0) { animation.translate_loop = ("true" == value); } value = tempElem.GetAttribute("reverse").Trim(); if (value.Length > 0) { animation.translate_reverse = ("true" == value); } } tempElem = (XmlElement)xmlNode.SelectSingleNode("Rotate"); if (null != tempElem) { animation.rotate_have = true; value = tempElem.GetAttribute("time").Trim(); animation.rotate_time = float.Parse(value); value = tempElem.GetAttribute("angle").Trim(); animation.rotate_angle = Mathf.Deg2Rad * float.Parse(value); value = tempElem.GetAttribute("restore").Trim(); if (value.Length > 0) { animation.rotate_restore = ("true" == value); } value = tempElem.GetAttribute("loop").Trim(); if (value.Length > 0) { animation.rotate_loop = ("true" == value); } value = tempElem.GetAttribute("reverse").Trim(); if (value.Length > 0) { animation.rotate_reverse = ("true" == value); } } m_animations.Add(animation.animation_id, animation); } // for } //if ("UIAnimation" == node1.Name) } //for root }