[Unity实战]结合UGUI制作技能系统

参考链接:http://www.unitymanual.com/thread-36543-1-1.html


代码如下:

using UnityEngine;
using System.Collections;
using System;

[Serializable]
public class SkillInfo {

    public string skillName;//技能名称
    public string imagePath;//技能图片路径
    public float coolingTime;//冷却时间

    public SkillInfo(string skillName, string imagePath, float coolingTime)
    {
        this.skillName = skillName;
        this.imagePath = imagePath;
        this.coolingTime = coolingTime;
    }
}

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;

public class SkillInfoManager : MonoBehaviour{

    public List<SkillInfo> skillInfos = new List<SkillInfo>();

	// Use this for initialization
	void Start () 
    {
        Init();

        for (int i = 0; i < skillInfos.Capacity; i++)
        {
            SkillInfo skillInfo = skillInfos[i];
            GameObject btnGO = GameObject.Find(string.Format("SkillButton{0}",i));
            
            //更新技能图片
            btnGO.GetComponent<Image>().overrideSprite = Resources.Load(skillInfo.imagePath, typeof(Sprite)) as Sprite;
            //绑定监听
            btnGO.GetComponent<Button>().onClick.AddListener
            (
                delegate()
                {
                    OnSkillButtonClick(skillInfo);
                }
            );
        }
	}

    void Init()
    {
        //角色技能初始化,从文件或数据库中读取角色当前的技能,这里简化了
        skillInfos.Add(new SkillInfo("剑", "sword", 1f));
        skillInfos.Add(new SkillInfo("鞋", "shoe", 2f));
        skillInfos.Add(new SkillInfo("衣", "clothes", 3f));
        skillInfos.Add(new SkillInfo("斧", "axe", 4f));
    }

    void OnSkillButtonClick(SkillInfo skillInfo)
    {
        //释放技能
        print(skillInfo.skillName + "释放技能!");
        //进入冷却
        StartCoroutine(Cooling(skillInfo));
    }

    IEnumerator Cooling(SkillInfo skillInfo)
    {
        yield return new WaitForSeconds(skillInfo.coolingTime);
        print(skillInfo.skillName + "冷却完毕!");
    }
}

未运行时是这样的:


运行时是这样的:


点击按钮是这样的:



这样就可以看到代码控制事件的强大吧!代码比较简单,就不解释了。。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值