Unity 내배캠 TIL

Unity 게임 개발 최종 팀 프로젝트(10주차 2일)

오늘도즐겨 2024. 11. 27. 02:03

🔥 11/26 화요일 목표 🔥

🔎  최종 팀 프로젝트 시작

 

 

 

 

 

턴제 전투의 GameManager부분을 맡게 되었는데,

턴제가 처음이라 어려울 거라 생각 했는데,

사실 State 를 Enum으로 분류해놓고, 기본 구조를 짜둔 정도에

다른 팀원분들의 작업이 끝나면 추가하는 방식으로 진행이 될 것 같다!

 

오전 중으로 GameManager의 전체적인 틀이 완성 되었다.

 

현재는 메소드를 생성해두고, OnClick으로 버튼에 넣어줘서 구현 확인 정도 가능하다.

추가적인 구현이 필요해 현재 상태는 완료대기!

 

📌팀노션의 (완료대기) 진행 현황판!!^-^

 

📌팀노션의 (작업중) 진행 현황판!!^-^

 

프로토타입의 과정이라 세세한구현 보다는 구현부터 시켜보자 라는 것에 의의를 두자 였기 때문에!

생각보다 일찍 끝나버려서 살짝 재 분배를 하면서 2주차의 과정을 살짝 앞당겨 오기로 했다.

 

인게임씬 UI

 

UI관련 데이터 업데이트?를 하는 방향으로 진행 했는데, 현재 테스트씬의 사진...✨

 

일단 UnitSO가 있어야해서, Data부분은 싹다 3주차로 미뤄뒀는데

1개를 만들어서 데이터매니저를 통해 List에 담아 Key값으로 불러 오기로 했다.

 

사실 구조적으로는 이해를 했는데, 코드는 공부가 더 필요해 보였다.

 

📌DataManager

public class DataManager
{
    public readonly Dictionary<int, UnitSO> UnitDict = new();
    
    public void Init()
    {      
        var unitDataList = Resources.Load<UnitSOList>("Data/SOs/UnitSOList");
        foreach (var t in unitDataList.Units)
            UnitDict.Add(t.iD, t);
    }
}

📌UnitInfo

public class UnitInfo
{
    public UnitSO UnitSo;
    public int Level;   
}

 

📌UnitSO

public enum Rank
{
    Rare,
    Legendary
}

[CreateAssetMenu (fileName = "UnitSO", menuName = "UnitSO")]
public class UnitSO : ScriptableObject
{
    [Header("Unit Info")] 
    public int iD;
    public string name;
    
    [Header("Unit Base Stat Info")]
    public int attackPower;
    public int defensivePower;
    public int health;

    [Header("Playable Info")]
    //보유스킬, 병과, 돌파정보, 소대배치코스트,등급
    public Sprite characterImg;
    public Rank rank; //enumType으로 정리 필요
}

 

❓ 여기서 의문점 하나!

     MonoBehaviour를 상속 받지 않는다.

     왜? Why? 어째서?

 

사실 MonoBehaviour은 유니티의 생명주기(라이프사이클)를 따르며, 무겁다.(짜릿짜릿!풀도핑! 의 리더님의 말^^7)

 

MonoBehaviour를 상속 받지 않을 경우!

순수한 C#객체로 동작, 더 구조적이고, 명시적인 코드를 작성할 수 있다.또한 명확한 데이터 관리에 적합하다고 한다. MonoBehaviour는 Unity의 GameObject에 귀속되므로 순수 데이터 관리에는 불필요한 요소가 될 수 있다.

 

대신 MonoBehaviour를 상속받지 않으면 Unity의 주요 기능

(예: Start(), Update(), Coroutine, Inspector에 노출되는 변수 등)을 사용할 수 없다.

즉, Unity 환경과의 직접적인 통합이 어렵다.

 

 

MonoBehaviour를 상속하지 않는 클래스는 Unity 엔진과의 의존성이 줄어들어 가볍고 재사용 가능한 구조를 만들 수 있지만,

Unity와 통합된 기능을 활용해야 하는 경우에는 적합하지 않을 수 있다. 적재적소에 적절히 사용하는 것이 중요!!!

 

🔥 11/27 수요일 목표 🔥

🔎  팀 프로젝트 UI에 정보 업데이트 - 로직 구현