using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; public class HeroShowBaseCell : MonoBehaviour { Image m_QualityBG; Image qualityBG { get { if (m_QualityBG == null) { m_QualityBG = this.transform.GetComponent("Container_HeroShow/dz"); } return m_QualityBG; } } UIHeroController m_HeroModel; UIHeroController heroModel { get { if (m_HeroModel == null) { m_HeroModel = this.transform.GetComponent("Container_HeroShow/rolemodel"); } return m_HeroModel; } } Transform m_StarRect; Transform starRect { get { if (m_StarRect == null) { m_StarRect = this.transform.Find("Container_HeroShow/stars"); } return m_StarRect; } } List m_StarsImg; List starsImg { get { if (m_StarsImg == null) { m_StarsImg = new List(); for (int i = 0; i < 5; i++) { var star = this.transform.GetComponent("Container_HeroShow/stars/star" + i); m_StarsImg.Add(star); } } return m_StarsImg; } } Image m_LockState; Image lockState { get { if (m_LockState == null) { m_LockState = this.transform.GetComponent("Container_HeroShow/lockstate"); } return m_LockState; } } Text m_Name; Text nameText { get { if (m_Name == null) { m_Name = this.transform.GetComponent("Container_HeroShow/name"); } return m_Name; } } Text m_LvText; //武将等级 + 觉醒等级 Text lvText { get { if (m_LvText == null) { m_LvText = this.transform.GetComponent("Container_HeroShow/lv"); } return m_LvText; } } OutlineEx heroNameOutline; OutlineEx heroLVOutline; void Awake() { LoadPrefab(); } // 武将小头像,(职业和名称不再此管理,各个界面排版不同) public void Init(int heroID, int skinID = 0, int breakLevel = 0, int star = 0, int awakelv = 0, int lv = 0, bool isShowLock = false) { var heroConfig = HeroConfig.Get(heroID); qualityBG.SetSprite("herodz" + heroConfig.Quality); // int skinID = 0; // if (heroGuid != "") // { // var hero = HeroManager.Instance.GetHero(heroGuid); // skinID = hero.SkinID; // } // else // { // skinID = heroConfig.SkinIDList[0]; // } heroModel.Create(skinID, heroConfig.UIScale); if (star == 0) { starRect.SetActive(false); } else { starRect.SetActive(true); for (int i = 0; i < starsImg.Count; i++) { if ((star - 1) % starsImg.Count >= i) { starsImg[i].SetActive(true); starsImg[i].SetSprite("herostar" + (((star - 1) / starsImg.Count) + 1) * starsImg.Count); } else { starsImg[i].SetActive(false); } } } lockState.SetActive(isShowLock); nameText.text = breakLevel == 0 ? heroConfig.Name : Language.Get("herocardbreaklv", heroConfig.Name, breakLevel); nameText.color = UIHelper.GetUIColorByFunc(heroConfig.Quality); heroNameOutline.colorType = (QualityTextColType)heroConfig.Quality; lvText.text = string.Format("{0}{1} {2}", Language.Get("L1094"), lv, awakelv == 0 ? Language.Get("herocard13") : Language.Get("herocard12", awakelv)); heroLVOutline.colorType = awakelv == 0 ? QualityTextColType.None : QualityTextColType.red; } GameObject cellContainer; protected void LoadPrefab() { if (cellContainer != null) return; var tmp = transform.Find("Container_HeroShow"); if (tmp != null) { cellContainer = tmp.gameObject; return; } if (cellContainer == null) { cellContainer = UIUtility.CreateWidget("HeroShowBaseCell", "Container_HeroShow"); if (cellContainer != null) { cellContainer.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one); cellContainer.transform.SetAsFirstSibling(); } } //缩放到和父rect一样大 var scale = 1f; var rect = cellContainer.GetComponent(); var parentRect = transform.GetComponent(); scale = parentRect.sizeDelta.x / rect.sizeDelta.x; cellContainer.transform.localScale = new Vector3(scale, scale, scale); heroNameOutline = nameText.GetComponent(); heroLVOutline = lvText.GetComponent(); } }