캐릭터의 스킬 트리 작업을 진행했다.

스킬 노드간의 관계에 따라 간선의 상태를 다르게 설정해야했다.

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

+ Recent posts