[TIL] 34일차 - 팀 과제 시작

김유원·2024년 2월 8일
0

📝 24.02.08

오늘로 유니티 숙련 주차 팀 과제를 시작했다. 우리 팀은 디펜스 게임을 만들기로 하였다.

나는 그 중 스킬 트리를 담당하여 만들기로 했다.

그래서 기본적인 틀을 짰다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SkillTree : MonoBehaviour
{
    public enum SkillType
    {
        DecreaseCool,
        increaseAtk,
        increaseAtkSphere
    }

    public SkillType type;
    public int amount;
    public bool isUnlocked = false;
    public SkillTree prevTree;

    public void CanOpen()
    {
        if(prevTree.isUnlocked)
        {
            //TODO: need GameManager gold check
            if (!isUnlocked)
                UnLock();
        } else
        {
            Debug.Log("prevTree is locked");
        }
    }

    public void UnLock()
    {
        switch((int)type)
        {
            case 0:
                SkillManager.instance.decreaseCool(amount);
                break;
            case 1:
                SkillManager.instance.increaseAtk(amount);
                break;
            case 2:
                SkillManager.instance.increaseAtkSphere();
                break;
        }

        isUnlocked = true;
    }
}

모든 스킬 트리에서 동일하게 UnLock() 함수를 사용하기 위해 Enum을 선언해서 각 스킬트리 종류마다 다른 기능이 실행되도록 구성했다.

스킬 트리는 대략 이렇게 구성되었다.

각 스킬트리 오브젝트별로 enum을 선택하고 button 클릭 시 Unlock() 함수를 실행하도록 연결만 해주면 될 듯 하다...

열리지 않은 스킬 트리는 버튼을 비활성화해두고 싶은데, 씬이 시작되는 시점이 아닌 이전 스킬 트리가 오픈된 시점에 어떻게 Interactable이 켜지게 할 지가 고민이다. 일괄적으로 모든 스킬 트리의 버튼 Interactable을 조작할 함수를 구성해야 될 것 같다.

profile
개발 공부 블로그

0개의 댓글

관련 채용 정보