유니티엔진 질문입니다.
조회수 1288회
// skilltree클래스
void Start()
{
SetSkill("Mage");
}
protected void SetSkill(string Class)
{
GameObject temp = Instantiate(SkilltoryManager.Instance.skillObject);
temp.AddComponent<SkillScript>();
SkillScript newSkill = temp.GetComponent<SkillScript>();
for (int i = 0; i < SkilltoryManager.Instance.SkillContainer.Heal.Count; i++)
{
newSkill.Skill = SkilltoryManager.Instance.SkillContainer.Heal[i];
if (newSkill != null && newSkill.Skill.SkillClass.ToString() == Class)
{
SkilltoryManager.Instance.AvailbeSkill.Add(newSkill);
}
}
for (int i = 0; i < SkilltoryManager.Instance.AvailbeSkill.Count; i++)
{
AddSkill(SkilltoryManager.Instance.AvailbeSkill[i]);
}
}
public void AddSkill(SkillScript skill)
{
if (emptySlots > 0)
{
foreach (SkillSlot slot in SkillSlots)
{
if (slot.Empty)
{
slot.AddSkill(skill);
break;
}
}
}
}
// SkillSlot 클래스의 AddSkill
public bool Empty;
public bool QuickSlot;
public bool isUsable;
public bool clickAlbe;
public Text SkillLevelText;
private SkillScript skill;
public SkillScript Skill
{
get { return skill; }
set { skill = value; }
}
public void AddSkill(SkillScript skill)
{
if (Empty && name!= "SkillHover")
{
transform.parent.parent.GetComponent<SkillTree>().EmptySlots--;
Empty = false;
}
this.skill = skill;
ChangeSprite(skill.skillNeutral);
}
availableSkill리스트에 사용가능한 스킬들을 담고,
리스트에 있는 스킬들을 순서대로 skillslot들에 하나하나씩 넣어줍니다. 문제는
위처럼 리스트로 만들어보기도하고 여러가지 방법을 써보았는데
위 과정에서 SetSkill에서는 디버그시 확실히 스킬들을 순서대로 전달합니다.
그런데 마지막 스킬이 add되면 리스트의 모든 스킬들이 마지막 스킬로 덮어씌워집니다.
왜이런거죠?
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력