using UnityEngine; using System.Collections; using UnityEngine.UI; using System; /// /// 英雄小头像格子 /// 角色的个人账号的 英雄头像 /// 不适用于显示 自己账号之外的其他玩家的数据 /// public class UI_HeroIconCardElement : GameBehavior { /// /// 数据 /// public string mHeroUIDData = null; /// /// 背景,点击选中 /// private GameObject mBG = null; /// /// 英雄小头像图标 /// private Image mIcon = null; /// /// 英雄头像边框 /// private Image mBorder = null; /// /// 元素图标 /// private Image myusnsuIcon; /// /// 职业类型图标 /// private Image mzhiyeIcon; /// /// 星级 /// private GameObject mStar; /// /// 等阶 /// private Image mDengjieIcon; /// /// 好感度 /// private GameObject mFavorIcon; /// /// 等级 /// private Text mLevelText = null; /// /// 等级背景 /// private Transform mLevelbg; /// /// 是否需要关注同步更新英雄数据 /// private bool mIsNeedReceiveUpdateData; private bool isSpecial = false; /// /// 初始化 /// /// 是否需要同步数据 public void Init(bool isNeedReceiveUpdateData = false) { mIsNeedReceiveUpdateData = isNeedReceiveUpdateData; mBG = transform.Find("bg").gameObject; Transform temp = transform.Find("bg/iconMask/icon"); if (temp == null) { isSpecial = false; mIcon = transform.Find("bg/icon").gameObject.GetComponent(); } else { mIcon = transform.Find("bg/iconMask/icon").gameObject.GetComponent(); isSpecial = true; } mLevelbg = transform.Find("bg/levelbg"); mBorder = transform.Find("bg/border").gameObject.GetComponent(); myusnsuIcon = transform.Find("bg/yuansuIcon").gameObject.GetComponent(); mzhiyeIcon = transform.Find("bg/zhiyeIcon").gameObject.GetComponent(); mLevelText = transform.Find("bg/value_levelText").gameObject.GetComponent(); mDengjieIcon = transform.Find("bg/dengjieIcon").gameObject.GetComponent(); mStar = transform.Find("bg/star").gameObject; UI_HeroStarComponment starMono = mStar.GetComponent(); if (starMono == null) { AssemblyHelper.Instance.BindScript("UI_HeroStarComponment", mStar); starMono = mStar.GetComponent(); } mBorder.enabled = false; mIcon.enabled = false; mzhiyeIcon.enabled = false; myusnsuIcon.enabled = false; mDengjieIcon.enabled = false; if (mLevelbg != null) { mLevelbg.gameObject.SetActive(false); } } /// /// 设置数据 /// /// 数据 public void SetData(string data) { mHeroUIDData = data; RefreshUI(); } /// /// 刷新显示具体数据 /// private void RefreshUI() { mBorder.enabled = false; mIcon.enabled = false; mzhiyeIcon.enabled = false; myusnsuIcon.enabled = false; mDengjieIcon.enabled = false; if (mLevelbg != null) { mLevelbg.gameObject.SetActive(false); } mLevelText.text = string.Empty; UI_HeroStarComponment starMono = mStar.GetComponent(); starMono.StarNum = 0; Player player = UserProxy.Instance.player; GameHeroVo vo = UserProxy.Instance.player.collectHero.GetHeroGameInfoByHeroUId(mHeroUIDData); if (vo == null) { if (isSpecial) { var cstVo = sm_heroextra_dengjie.GetMoById(0); if (cstVo != null) { IconManager.Instance.SetIcon(mBorder.GetComponent(), IconPrefixConst.HeroDengjie_BorderIcon, cstVo.borderIcon); mBorder.enabled = true; } } return; } mzhiyeIcon.enabled = true; myusnsuIcon.enabled = true; mDengjieIcon.enabled = true; mBorder.enabled = true; mLevelText.text = "等级 " + vo.level.ToString(); if (mLevelbg != null) { mLevelbg.gameObject.SetActive(true); } IconManager.Instance.SetIcon(mzhiyeIcon.GetComponent(), IconPrefixConst.ZhiyeIcon, vo.mo.zhiyeIcon); IconManager.Instance.SetIcon(myusnsuIcon.GetComponent(), IconPrefixConst.YuansuIcon, vo.mo.yuansuIcon); IconManager.Instance.SetIcon(mIcon.GetComponent(), IconPrefixConst.HeroHeadIcon, vo.mo.headIcon, false, () => { mIcon.enabled = true; }); var costVo = sm_heroextra_dengjie.GetMoById(vo.strengthLevel); if (costVo != null) { IconManager.Instance.SetIcon(mDengjieIcon.GetComponent(), IconPrefixConst.HeroDengjieIcon, costVo.icon, true); if (isSpecial) { IconManager.Instance.SetIcon(mBorder.GetComponent(), IconPrefixConst.HeroDengjie_BorderIcon, costVo.borderIcon); } else { IconManager.Instance.SetIcon(mBorder.GetComponent(), IconPrefixConst.HeroDengjie_BorderIcon, costVo.heroBorder_normal); } } starMono.StarNum = vo.curStar; } /// /// 注册事件 /// public override void distroyListeners() { base.distroyListeners(); if (mIsNeedReceiveUpdateData) { Player player = UserProxy.Instance.player; player.collectHero.RefreshUIViewHeroDataChangeEvent += OnRefreshDisplayHeroUI; } } /// /// 删除事件 /// public override void registListeners() { base.registListeners(); if (mIsNeedReceiveUpdateData) { Player player = UserProxy.Instance.player; player.collectHero.RefreshUIViewHeroDataChangeEvent -= OnRefreshDisplayHeroUI; } } /// /// 接收 英雄数值发生变化处理 /// /// 变化的英雄UID /// 暂时无用 public void OnRefreshDisplayHeroUI(object sender, EventArgs e) { RefreshUI(); } }