[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 + " !");
}
}
未運転の場合はこのようになります.実行時はこうです.
ボタンをクリックするとこうなります.
コード制御イベントの強さが見られますよね.コードは比較的簡単です.説明しません.