캐릭터의 스킬 트리 작업을 진행했다.
스킬 노드간의 관계에 따라 간선의 상태를 다르게 설정해야했다.
case 1. 활성화된 노드(부모) - 활성화된 노드(자식) -> 밝게 빛나는 간선
case 2. 활성화된 노드(부모) - 비활성화된 노드(자식) -> 하이라이트 표시된 간선 (임시로 빨갛게 표시함)
case 3. 비활성화된 노드(부모) - 비활성화된 노드(자식) - > 회색빛 간선
세 가지 케이스로 분류할 수 있다.
해당 간선은 스킬 트리와 장비 트리에 사용되기때문에 두 케이스를 고려해 작업해야했다.
1
2
3
4
5
6
|
public GameObject CreateLineObject<T>(Vector3 start, Vector3 end, T data,Transform parent) {
GameObject LinePrefab = Resources.Load("Prefabs/LineRenderer") as GameObject;
GameObject Line = Instantiate<GameObject>(LinePrefab,parent);
Line.GetComponent<RenderBridge>().Init(start, end, data);
return Line;
}//FactoryManager
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public void Init<T>(Vector3 start, Vector3 end, T data) {
type = typeof(T);
if(type == typeof(SkillDTO)) {
skill = (SkillDTO)Convert.ChangeType(data, type);
Debug.Log("skill");
Debug.Log(skill.Number);
}
else {
//equip = data;
equip = (EquipmentDTO)Convert.ChangeType(data, type);
Debug.Log("Equip");
}
parentPosition = this.gameObject.transform.parent.position;
parentPosition_2 = this.gameObject.transform.parent.position;
startPosition = start;
endPosition = end;
this.GetComponent<LineRenderer>().SetPosition(0, startPosition);
this.GetComponent<LineRenderer>().SetPosition(1, endPosition);
parentPosition = this.transform.parent.position;
initialized = true;
}
|
cs |
각 노드는 FactoryManager라는 클래스를 통해 인스턴스화된다.
FactoryManager의 CreateLineObject가 호출될 때 받은 data의 타입에 따라 어떻게 처리할지 if문으로 구분했다.(이부분은 분명 더 좋은 방법이 있을것같은데 당장 떠오르는게 없었다...)
'Unity > 작업&삽질노트' 카테고리의 다른 글
2021-08-12 작업일지 (0) | 2021.08.12 |
---|---|
2021-08-09 작업일지 (0) | 2021.08.09 |
2021-08-04 작업일지 (0) | 2021.08.04 |
2021-08-03 작업일지 (0) | 2021.08.03 |
[작업일지] 2019-06-13 (0) | 2019.06.13 |