45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace BlueWaterProject
|
|
{
|
|
[Serializable]
|
|
public class SkillController : MonoBehaviour
|
|
{
|
|
[SerializeField] private List<GameObject> skillObjList = new(GlobalValue.SKILL_DATA_CAPACITY);
|
|
private Dictionary<string, ISkill> skillDictionary;
|
|
|
|
private ISkill cachingSkill;
|
|
|
|
private void Awake()
|
|
{
|
|
Initialize();
|
|
}
|
|
|
|
private void Initialize()
|
|
{
|
|
skillDictionary = new Dictionary<string, ISkill>(skillObjList.Count);
|
|
|
|
foreach (var skill in skillObjList)
|
|
{
|
|
var iSkill = skill.GetComponent<ISkill>();
|
|
if (iSkill == null)
|
|
{
|
|
print(skill + "오브젝트의 ISkill컴포넌트에 접근할 수 없습니다.");
|
|
continue;
|
|
}
|
|
skillDictionary.Add(iSkill.Name, iSkill);
|
|
}
|
|
}
|
|
|
|
public ISkill GetSkillByName(string skillName)
|
|
{
|
|
if (skillDictionary.TryGetValue(skillName, out cachingSkill)) return cachingSkill;
|
|
|
|
print(skillName + "은(는) 스킬 딕셔너리에 존재하지 않습니다.");
|
|
return null;
|
|
}
|
|
}
|
|
} |