스킬트리 구현하기 (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;
}
}
디테일한 정보는 상황에 맞게 추가하면 된다.
스킬 포인트, 코스트, 스킬 레벨 등등.
★☆☆☆☆
반응형
'개발 > 코드' 카테고리의 다른 글
코드) 특정 각도로 바라보게 하기 (0) | 2023.11.20 |
---|---|
코드) 문자열 문자와 숫자 구분하기 (2) | 2023.10.30 |
코드) Unity-FPS 표기 (Frame Per Second) (3) | 2022.10.27 |
c#) 숫자 0으로 자리수 체우기 (0) | 2022.09.20 |
c#) 배열에서 배열을 중복 제거하기 (0) | 2022.07.27 |
댓글