using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
using UnityEngine.Events; 
 | 
  
 | 
public class SkillBaseCell : MonoBehaviour 
 | 
{ 
 | 
  
 | 
    Image m_SkillIcon; 
 | 
    Image skillIcon 
 | 
    { 
 | 
        get 
 | 
        { 
 | 
            if (m_SkillIcon == null) 
 | 
            { 
 | 
                m_SkillIcon = this.transform.GetComponent<Image>("Container_SkillCell/Img_Icon"); 
 | 
            } 
 | 
            return m_SkillIcon; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    Button m_SkillBtn; 
 | 
    Button skillBtn 
 | 
    { 
 | 
        get 
 | 
        { 
 | 
            if (m_SkillBtn == null) 
 | 
            { 
 | 
                m_SkillBtn = this.transform.GetComponent<Button>("Container_SkillCell"); 
 | 
            } 
 | 
            return m_SkillBtn; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    Text m_SkillType; 
 | 
    Text skillType 
 | 
    { 
 | 
        get 
 | 
        { 
 | 
            if (m_SkillType == null) 
 | 
            { 
 | 
                m_SkillType = this.transform.GetComponent<Text>("Container_SkillCell/type"); 
 | 
            } 
 | 
            return m_SkillType; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    void Awake() 
 | 
    { 
 | 
        LoadPrefab(); 
 | 
    } 
 | 
  
 | 
    public void Init(int skillID, UnityAction onclick = null, bool showType = false) 
 | 
    { 
 | 
        var config = SkillConfig.Get(skillID); 
 | 
        if (config == null) 
 | 
        { 
 | 
            Debug.LogErrorFormat("技能未配置 : {0}", skillID); 
 | 
            return; 
 | 
        } 
 | 
        skillIcon.SetOrgSprite(config.IconName, "SkillIcon"); 
 | 
#if UNITY_EDITOR 
 | 
        if (string.IsNullOrEmpty(config.IconName)) 
 | 
        {  
 | 
            //内网测试 
 | 
            skillIcon.SetOrgSprite("skillicondefault", "SkillIcon"); 
 | 
        } 
 | 
#endif 
 | 
         
 | 
        skillBtn.AddListener(()=> 
 | 
        { 
 | 
            onclick?.Invoke(); 
 | 
        }); 
 | 
  
 | 
        if (showType) 
 | 
        { 
 | 
            skillType.text = Language.Get(config.FuncType == 1 ? "HeroSkillType_1" : "HeroSkillType_2"); 
 | 
        } 
 | 
        else 
 | 
        {  
 | 
            skillType.text = string.Empty; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    GameObject cellContainer; 
 | 
    protected void LoadPrefab() 
 | 
    { 
 | 
        if (cellContainer != null) 
 | 
            return; 
 | 
  
 | 
        var tmp = transform.Find("Container_SkillCell"); 
 | 
        if (tmp != null) 
 | 
        { 
 | 
            cellContainer = tmp.gameObject; 
 | 
            return; 
 | 
        } 
 | 
        if (cellContainer == null) 
 | 
        { 
 | 
            cellContainer = UIUtility.CreateWidget("SkillBaseCell", "Container_SkillCell"); 
 | 
  
 | 
            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<RectTransform>(); 
 | 
        var parentRect = transform.GetComponent<RectTransform>(); 
 | 
        scale = parentRect.sizeDelta.x / rect.sizeDelta.x; 
 | 
        cellContainer.transform.localScale = new Vector3(scale, scale, scale); 
 | 
    } 
 | 
} 
 |