OldBlueWater/BlueWater/Assets/02.Scripts/Skill/SkillController.cs

54 lines
1.7 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
[Serializable]
public class SkillController : MonoBehaviour
{
2023-11-12 18:54:37 +00:00
[SerializeField] private GameObject activeSkillPrefab;
[SerializeField] private ActiveSkillDataSo activeSkillDataSo;
private Dictionary<string, ActiveSkillData> activeSkillDictionary;
2023-11-12 18:54:37 +00:00
private ActiveSkillData cachingObj;
private void Awake()
{
2023-11-12 18:54:37 +00:00
Init();
}
2023-11-12 18:54:37 +00:00
private void Init()
{
2023-11-12 18:54:37 +00:00
activeSkillDictionary = new Dictionary<string, ActiveSkillData>(activeSkillDataSo.ActiveSkillDataList.Count);
2023-11-12 18:54:37 +00:00
foreach (var activeSkillData in activeSkillDataSo.ActiveSkillDataList)
{
2023-11-12 18:54:37 +00:00
activeSkillDictionary.Add(activeSkillData.Name, activeSkillData);
}
}
2023-11-12 18:54:37 +00:00
public ActiveSkill InstantiateActiveSkillByName(string skillName)
{
2023-11-12 18:54:37 +00:00
var instantiateActiveSkill = Instantiate(activeSkillPrefab).GetComponent<ActiveSkill>();
if (instantiateActiveSkill == null)
{
print("스킬을 생성할 수 없습니다.");
return null;
}
instantiateActiveSkill.ActiveSkillData = GetSkillByName(skillName);
instantiateActiveSkill.ChangeIndicatorType();
return instantiateActiveSkill;
}
public ActiveSkillData GetSkillByName(string skillName)
{
if (activeSkillDictionary.TryGetValue(skillName, out cachingObj)) return cachingObj;
print(skillName + "은(는) 스킬 딕셔너리에 존재하지 않습니다.");
return null;
}
}
}