using System; using System.Collections.Generic; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { [Serializable] public class SkillController : MonoBehaviour { [SerializeField] private GameObject activeSkillPrefab; [SerializeField] private ActiveSkillDataSo activeSkillDataSo; private Dictionary activeSkillDictionary; private ActiveSkillData cachingObj; private void Awake() { Init(); } private void Init() { activeSkillDictionary = new Dictionary(activeSkillDataSo.ActiveSkillDataList.Count); foreach (var activeSkillData in activeSkillDataSo.ActiveSkillDataList) { activeSkillDictionary.Add(activeSkillData.Name, activeSkillData); } } public ActiveSkill InstantiateActiveSkillByName(string skillName) { var instantiateActiveSkill = Instantiate(activeSkillPrefab).GetComponent(); 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; } } }