[Unity実戦]UGUI製作技能システムを結合する

3231 ワード

参照リンク: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 + "    !");
    }
}
未運転の場合はこのようになります.
[Unity实战]结合UGUI制作技能系统_第1张图片
実行時はこうです.
[Unity实战]结合UGUI制作技能系统_第2张图片
ボタンをクリックするとこうなります.
[Unity实战]结合UGUI制作技能系统_第3张图片
コード制御イベントの強さが見られますよね.コードは比較的簡単です.説明しません.