스킬 버튼 동작 구현 테스트
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace TON
|
||||
{
|
||||
[System.Serializable]
|
||||
public abstract class SkillBase
|
||||
{
|
||||
public float SkillCoolDown => SkillData.coolDown;
|
||||
public float CurrentCoolDown { get; protected set; }
|
||||
|
||||
public SkillData SkillData { get; private set; }
|
||||
|
||||
|
||||
public void Init(SkillData skillData)
|
||||
{
|
||||
SkillData = skillData;
|
||||
}
|
||||
|
||||
public void UpdateSkill(float deltaTime)
|
||||
{
|
||||
CurrentCoolDown -= deltaTime;
|
||||
CurrentCoolDown = Mathf.Max(0, CurrentCoolDown);
|
||||
}
|
||||
|
||||
|
||||
public abstract void ExecuteSkill(CharacterBase actor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9407c2d7c54dec74eac0fe37da48ef1d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -7,6 +7,7 @@ namespace TON
|
||||
public class SkillDataManager : SingletonBase<SkillDataManager>
|
||||
{
|
||||
public List<SkillData> skillDatas { get; private set; }
|
||||
public List<SkillBase> skillBases { get; private set; }
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
@@ -21,6 +22,10 @@ namespace TON
|
||||
{
|
||||
skillDatas = new List<SkillData>();
|
||||
}
|
||||
|
||||
// skillData를 skillBase로 치환
|
||||
// 기존 스킬 클래스들을 skillBase를 상속받게 변경
|
||||
|
||||
}
|
||||
|
||||
public SkillData GetSkillData(string skillId)
|
||||
|
||||
@@ -74,5 +74,17 @@ namespace TON
|
||||
|
||||
linkedCharactor.SkillAttack(skill.skillData.name);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
foreach (var index in skillButtons.Keys)
|
||||
{
|
||||
ControllerUI_SkillButton skillButton = skillButtons.GetValueOrDefault(index);
|
||||
if (skillButton != null && skillButton.skillData != null)
|
||||
{
|
||||
// skillButton.SetCoolTime()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
@@ -9,8 +10,10 @@ namespace TON
|
||||
{
|
||||
|
||||
public SkillData skillData;
|
||||
public GameObject skillImage;
|
||||
public GameObject lockImage;
|
||||
[SerializeField] private TextMeshProUGUI coolTimeText;
|
||||
[SerializeField] private Image coolTimeDimd;
|
||||
[SerializeField] private GameObject skillIcon;
|
||||
[SerializeField] private GameObject lockImage;
|
||||
|
||||
[SerializeField]
|
||||
private SerializableDictionary<string, Sprite> skillSprite = new SerializableDictionary<string, Sprite>();
|
||||
@@ -19,12 +22,18 @@ namespace TON
|
||||
{
|
||||
Debug.Log($"Initalize :: {skillData.id}");
|
||||
this.skillData = skillData;
|
||||
skillImage.SetActive(true);
|
||||
skillImage.GetComponent<Image>().sprite = skillSprite.GetValueOrDefault(skillData.id, null);
|
||||
skillIcon.SetActive(true);
|
||||
skillIcon.GetComponent<Image>().sprite = skillSprite.GetValueOrDefault(skillData.id, null);
|
||||
lockImage.SetActive(false);
|
||||
|
||||
}
|
||||
|
||||
public void SetCoolTime(float remain, float max)
|
||||
{
|
||||
coolTimeText.gameObject.SetActive(remain > 0f);
|
||||
coolTimeText.text = $"{Mathf.CeilToInt(remain)}s";
|
||||
coolTimeDimd.fillAmount = remain / max;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user