본문 바로가기
개발/코드

Unity Code) 스킬트리 구현하기 (SKill Tree Code Sample)

by 테샤르 2024. 4. 8.

스킬트리 구현하기 (SKill Tree Code Sample)

 

간단하게 스킬 트리를 처리하는 코드를 구현하면서 간단하게 포스팅한다.

반응형

 

 

< SkillNode >

스킬에 대한 정보에 대한 연결을 처리하기위한 클래스이다.

간단하게 해당 스킬에 대한 이름정도만 가지고 있다.

using System.Collections.Generic;

public class SkillNode
{
    public string Name { get; set; }
    public List<SkillNode> Children { get; set; }
    public SkillNode Parent { get; set; }

    public SkillNode(string name)
    {
        Name = name;
        Children = new List<SkillNode>();
    }

    public void AddChild(SkillNode child)
    {
        Children.Add(child);
        child.Parent = this;
    }
}

 

< SkillTree >

Tree 형태로 Skill에 대한 연결을 실제 처리하는 Tree 구조이다.

단순하게 보면 Tree 구조형태로 구성되어있다고 생각하면 된다.

using System.Collections.Generic;

public class SkillTree
{
    public SkillNode StartNode { get; private set; }
    public SkillNode EndNode { get; private set; }

    public SkillTree(string startName, string endName)
    {
        StartNode = new SkillNode(startName);
        EndNode = new SkillNode(endName);
        StartNode.AddChild(EndNode);
    }

    public SkillNode AddSkill(string parentName, string skillName)
    {
        var parentNode = FindNode(StartNode, parentName);
        if (parentNode != null)
        {
            var newSkillNode = new SkillNode(skillName);
            parentNode.AddChild(newSkillNode);
            return newSkillNode;
        }
        return null;
    }

    private SkillNode FindNode(SkillNode currentNode, string nodeName)
    {
        if (currentNode.Name == nodeName)
            return currentNode;

        foreach (var child in currentNode.Children)
        {
            var foundNode = FindNode(child, nodeName);
            if (foundNode != null)
                return foundNode;
        }

        return null;
    }
}

 

디테일한 정보는 상황에 맞게 추가하면 된다.

스킬 포인트, 코스트, 스킬 레벨 등등.

 

 

★☆☆☆☆

 

반응형

댓글