스킬 슬롯 업데이트 로직 수정
This commit is contained in:
@@ -19,6 +19,7 @@ namespace TON
|
||||
SetSkillInstances();
|
||||
// TODO: player skill data 초기화[셋팅]
|
||||
// 예시) 1,4,5번 스킬을 EquippedSkills에 추가
|
||||
GetActiveSkillInstance();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@@ -32,6 +33,11 @@ namespace TON
|
||||
|
||||
private void LoadSkillData()
|
||||
{
|
||||
if (skillDatas != null)
|
||||
{
|
||||
skillDatas.Clear();
|
||||
}
|
||||
|
||||
skillDatas = JSONLoader.LoadFromResources<List<SkillData>>("Skill");
|
||||
if (skillDatas == null)
|
||||
{
|
||||
@@ -66,12 +72,24 @@ namespace TON
|
||||
}
|
||||
|
||||
// 스킬 슬롯에 적용해야하는 스킬 리스트 리턴
|
||||
public List<SkillBase> GetEquippedSkills()
|
||||
{
|
||||
return equippedSkills;
|
||||
}
|
||||
|
||||
// 스킬 슬롯에 적용될 스킬 리스트 초기화 및 업데이트에 사용
|
||||
public List<SkillBase> GetActiveSkillInstance()
|
||||
{
|
||||
if (equippedSkills != null)
|
||||
{
|
||||
equippedSkills.Clear();
|
||||
}
|
||||
|
||||
foreach (SkillData skill in skillDatas)
|
||||
{
|
||||
if (skill.slotNumber == 1 || skill.slotNumber == 2 || skill.slotNumber == 3)
|
||||
{
|
||||
Debug.Log("GetActiveSkillInstance() : " + skill.id);
|
||||
equippedSkills.Add(skillInstances.GetValueOrDefault(skill.id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace TON
|
||||
}
|
||||
|
||||
// 스킬 버튼을 생성
|
||||
List<SkillBase> activatedSkills = SkillDataManager.Singleton.GetActiveSkillInstance();
|
||||
List<SkillBase> activatedSkills = SkillDataManager.Singleton.GetEquippedSkills();
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
ControllerUI_SkillButton newSkillButton = Instantiate(skillButtonPrefab, skillButtonGroup);
|
||||
|
||||
@@ -8,12 +8,46 @@ namespace TON
|
||||
{
|
||||
public static SkillSettingUI Instance => UIManager.Singleton.GetUI<SkillSettingUI>(UIList.SkillSettingUI);
|
||||
|
||||
public List<SkillSettingUI_SkillSlot> slots;
|
||||
public Transform skillSlotGroup;
|
||||
public SkillSettingUI_SkillSlot skillSlotPrefab;
|
||||
public List<SkillSettingUI_SkillSlot> createSkillSlots = new List<SkillSettingUI_SkillSlot>();
|
||||
|
||||
|
||||
public void Start()
|
||||
{
|
||||
|
||||
SetSkillSlots();
|
||||
}
|
||||
|
||||
private void SetSkillSlots()
|
||||
{
|
||||
// 이미 기존에 UI가 생성되어 있다면 삭제
|
||||
if (createSkillSlots.Count > 0)
|
||||
{
|
||||
foreach (var button in createSkillSlots)
|
||||
{
|
||||
Destroy(button.gameObject);
|
||||
}
|
||||
createSkillSlots.Clear();
|
||||
}
|
||||
|
||||
// 스킬 버튼을 생성
|
||||
List<SkillBase> activatedSkills = SkillDataManager.Singleton.GetEquippedSkills();
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
SkillSettingUI_SkillSlot newSkillSlot = Instantiate(skillSlotPrefab, skillSlotGroup);
|
||||
newSkillSlot.gameObject.SetActive(true);
|
||||
|
||||
if (i < activatedSkills.Count) // 해당 인덱스에 활성화된 스킬이 있을 경우
|
||||
{
|
||||
newSkillSlot.Initalize(activatedSkills[i].SkillData.id);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 복제 됐을때 기본 상태가 잠금 상태
|
||||
}
|
||||
|
||||
createSkillSlots.Add(newSkillSlot);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Assertions;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace TON
|
||||
@@ -9,21 +10,25 @@ namespace TON
|
||||
{
|
||||
public GameObject skillImage;
|
||||
public GameObject lockerImage;
|
||||
public GameObject selectedState;
|
||||
|
||||
public void Initalize()
|
||||
public void Initalize(string skillId)
|
||||
{
|
||||
// 스킬 이미지 세팅하기
|
||||
// skillImage = GetComponent<GameObject>();
|
||||
Assert.IsTrue(AssetManager.Singleton.LoadSkillIcon(skillId, out Sprite loadedSkillImage));
|
||||
skillImage.SetActive(true);
|
||||
skillImage.GetComponent<Image>().sprite = loadedSkillImage;
|
||||
lockerImage.SetActive(false);
|
||||
}
|
||||
|
||||
public void SelectedSlot()
|
||||
{
|
||||
lockerImage.SetActive(true);
|
||||
selectedState.SetActive(true);
|
||||
}
|
||||
|
||||
public void UnselectedSlot()
|
||||
{
|
||||
lockerImage.SetActive(false);
|
||||
selectedState.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user